使用Excel MATCH函数时,如何匹配多结果中对应最小值的行?
解决Excel中MATCH多匹配时返回对应Value最小项的行号问题
假设你的数据结构是:ID列在A3:A8,对应的数值列(Value)在B3:B8,需要匹配ID=1,返回所有匹配项中Value最小的那个在A3:A8数组内的位置(或工作表实际行号),以下是两种可行方案:
方法1:兼容所有Excel版本的数组公式
结合MATCH、MIN和IF函数实现,老版本Excel需要按Ctrl+Shift+Enter作为数组公式输入,新版本直接回车即可。
返回数组内的位置(比如A7对应数组第5行)
=MATCH(MIN(IF(A3:A8=1,B3:B8)),IF(A3:A8=1,B3:B8),0)
- 逻辑拆解:
IF(A3:A8=1,B3:B8):筛选出所有ID=1对应的Value值,形成仅包含符合条件数值的数组(不符合条件的为FALSE)MIN(...):从上述数组中提取最小的Value值- 外层
MATCH:在筛选后的Value数组中定位这个最小值的位置,即为原ID数组中符合条件且Value最小的项的位置
返回工作表实际行号(比如A7对应行号7)
=MATCH(MIN(IF(A3:A8=1,B3:B8)),IF(A3:A8=1,B3:B8),0)+ROW(A3)-1
- 补充:通过
ROW(A3)-1将数组内的相对位置转换为工作表的绝对行号
方法2:Excel 365/2021 动态数组简化公式
利用动态数组函数可以更简洁地实现需求:
方案A:用XLOOKUP+MINIFS
=XLOOKUP(MINIFS(B3:B8,A3:A8,1),B3:B8,ROW(A3:A8)-ROW(A3)+1,,-1)
- 逻辑:
MINIFS(B3:B8,A3:A8,1):直接计算ID=1对应的最小ValueXLOOKUP定位该最小值在Value列的位置,返回对应的数组内相对位置(ROW(A3:A8)-ROW(A3)+1)
方案B:用INDEX+MATCH+FILTER
=MATCH(TRUE,FILTER(B3:B8,A3:A8=1)=MINIFS(B3:B8,A3:A8,1),0)
- 逻辑:
FILTER(B3:B8,A3:A8=1):筛选出所有ID=1的Value值- 对比筛选结果与最小值,生成布尔数组
MATCH找到第一个TRUE的位置,即为目标项在原数组中的位置
注意事项
- 如果存在多个匹配项的Value相同且均为最小值,公式会返回第一个出现的项的位置
- 确保ID列与Value列的行数完全对应,避免数据错位
内容的提问来源于stack exchange,提问作者Village.Idyot
相关产品推荐
相关产品推荐

