Excel INDEX&MATCH函数匹配重复值返回错误结果求助
问题根因
你当前使用的单条件INDEX+MATCH公式仅以F列(labor Maint. Charge列)的数值作为唯一匹配维度。MATCH函数在匹配时默认返回查找区域内从上到下第一个符合条件的结果行号,当F12、F13出现重复数值时,E13的公式会直接抓取第一个匹配值对应的E12单元格内容,自然返回错误结果。
解决方法
根据你使用的Excel版本选择对应公式即可,以下公式默认你的Factory name查找区域为$A$2:$A$20,对应的费用匹配区域为$B$2:$B$20,你可以根据自己表格的实际区域替换:
- 如果你用的是Excel 365/2021及以上支持动态数组的版本,直接在E13单元格输入以下公式回车即可:
=XLOOKUP(1,($B$2:$B$20=F13)*(COUNTIF(E$12:E12,$A$2:$A$20)=0),$A$2:$A$20)
公式逻辑:匹配时同时满足两个条件:一是费用值等于当前行F列的值,二是该工厂名没有在之前的单元格返回过,遇到重复费用值会自动跳过已经匹配过的工厂,返回下一个符合条件的结果。
- 如果你用的是2019及更早的旧版Excel,在E13单元格输入以下公式后,按
Ctrl+Shift+Enter三键结束数组公式确认:
=INDEX($A$2:$A$20,MATCH(1,($B$2:$B$20=F13)*(COUNTIF(E$12:E12,$A$2:$A$20)=0),0))
公式逻辑和上面的XLOOKUP完全一致,只是用INDEX+MATCH的组合兼容旧版本Excel。
输入完E13的公式后,直接下拉填充整列即可,所有重复费用值的行都会按顺序返回正确的工厂名,不会出现重复返回第一个结果的问题。
内容的提问来源于stack exchange,提问作者Asem omar
相关产品推荐
相关产品推荐

