Excel中如何提取所有最大值对应的名称?(解决INDEX+MATCH仅返回首个结果)
提取Excel中所有最大值对应的名称方法
你使用的INDEX($A$4:$A$14;MATCH(MAX($AI$4:$AI$14);$AI$4:$AI$14;0))仅能返回第一个匹配最大值的名称,针对多最大值场景,可根据你的Excel版本选择以下方案:
一、Excel 365/2021(支持动态数组)
直接使用FILTER函数,自动返回所有符合条件的名称,公式如下:
=FILTER($A$4:$A$14;$AI$4:$AI$14=MAX($AI$4:$AI$14))
输入后公式会自动溢出到下方单元格,展示所有最大值对应的名称。
二、旧版Excel(无动态数组支持)
1. 合并所有名称到单个单元格
使用TEXTJOIN+IF组合的数组公式(需按Ctrl+Shift+Enter确认输入),将所有匹配名称用指定分隔符连接:
=TEXTJOIN(", ";TRUE;IF($AI$4:$AI$14=MAX($AI$4:$AI$14);$A$4:$A$14;""))
参数说明:", "为名称间的分隔符,可根据需求修改;TRUE表示忽略空值。
2. 逐个提取到独立单元格
在目标单元格(如B4)输入以下数组公式(按Ctrl+Shift+Enter确认),然后下拉填充,依次提取所有最大值对应的名称:
=IFERROR(INDEX($A$4:$A$14;SMALL(IF($AI$4:$AI$14=MAX($AI$4:$AI$14);ROW($AI$4:$AI$14)-ROW($AI$4)+1);ROWS($B$4:B4)));"")
逻辑说明:
IF函数标记所有值等于最大值的行位置SMALL函数依次提取第1、2、3...个符合条件的位置INDEX根据位置返回对应名称IFERROR处理无更多匹配项时的错误,返回空值
3. 辅助列简化操作
如果觉得数组公式复杂,可通过辅助列实现:
- 在空白列(如AJ列)的AJ4单元格输入:
=IF($AI4=MAX($AI$4:$AI$14);ROW();""),下拉填充,记录所有最大值对应的行号 - 在目标单元格输入:
=IFERROR(INDEX($A$4:$A$14;SMALL($AJ$4:$AJ$14;ROWS($B$4:B4)));""),下拉填充即可逐个提取名称
内容的提问来源于stack exchange,提问作者Fabio
相关产品推荐
相关产品推荐

