如何用Excel公式按表头名、数值从小到大查找并返回归属项?
不用宏实现Excel数值排序并返回对应项目名称的方案
完全可以不用宏或VBA代码实现这个需求,以下分两种Excel版本给出具体公式:
适用于Excel 365/2021及以上版本(支持动态数组)
如果你的Excel版本支持动态数组函数,直接用SORTBY函数就能一步完成:
假设A列是项目名称,B列是对应数值(数据范围为A2:A10和B2:B10),在空白单元格输入:
=SORTBY(A2:A10, B2:B10, -1)
- 参数说明:
A2:A10:要返回的项目名称区域B2:B10:作为排序依据的数值区域-1:表示按数值降序排列,改为1则是升序
- 公式输入后会自动溢出所有排序后的名称,无需手动下拉填充。
适用于Excel 2019及更早版本(不支持动态数组)
需要结合INDEX、MATCH和LARGE(或SMALL)函数实现:
降序排列(无重复数值)
在空白列的第一个单元格(比如C2)输入:
=INDEX(A2:A10, MATCH(LARGE(B2:B10, ROW(A1)), B2:B10, 0))
输入完成后下拉填充公式,即可得到按数值降序排列的项目名称。
降序排列(处理重复数值)
如果存在相同数值,上面的公式会重复返回第一个匹配的名称,可改用以下数组公式(输入后按Ctrl+Shift+Enter确认,365版本无需此操作):
=INDEX(A2:A10, MATCH(1, (B2:B10=LARGE(B2:B10, ROW(A1)))*(COUNTIF(C$1:C1, A2:A10)=0), 0))
这个公式会跳过已经返回过的名称,确保每个项目只出现一次。
升序排列
把上述公式中的LARGE替换为SMALL即可实现按数值升序排列。
内容的提问来源于stack exchange,提问作者Krisna
相关产品推荐
相关产品推荐

