如何基于多列条件匹配Excel表格中的对应行号?
如何基于多列条件获取表格中匹配的行号
你的当前公式思路有问题哦——=MATCH(E2,A1:A10,0)&MATCH(F2,B1:B10,0)&MATCH(G2,C1:C10,0)只是把三个条件各自在对应列的位置拼接成字符串,根本没法保证三个条件同时出现在同一行,自然得不到正确的匹配行号。比如如果Date在第2行、Session在第3行、Semester在第2行,公式会返回"232",这显然不是你要的结果。
下面给你两种不同Excel版本的解决方案:
方法1:适用于Excel 365/2021(支持动态数组)
找第一个匹配的行号
用XMATCH结合数组逻辑判断,直接定位同时满足三个条件的行:
=XMATCH(1,(A1:A10=E2)*(B1:B10=F2)*(C1:C10=G2),0)
这里的(A1:A10=E2)*(B1:B10=F2)*(C1:C10=G2)会生成一个0和1组成的数组,只有三个条件全满足的行才会是1,XMATCH会找到第一个1的位置,也就是你要的匹配行号。
找所有匹配的行号
如果表格里可能有多个符合条件的行,用FILTER可以一次性返回所有匹配的行号,没有匹配时还能自定义提示:
=FILTER(ROW(A1:A10),(A1:A10=E2)*(B1:B10=F2)*(C1:C10=G2),"无匹配结果")
方法2:适用于旧版Excel(不支持动态数组)
用INDEX+MATCH的数组公式组合,输入完成后需要按Ctrl+Shift+Enter(不要手动加大括号,Excel会自动添加):
=INDEX(ROW(A1:A10),MATCH(1,(A1:A10=E2)*(B1:B10=F2)*(C1:C10=G2),0))
这个公式会返回第一个满足所有条件的行号。
小提示
- 如果你的数据区域不止10行,记得把公式里的
A1:A10、B1:B10、C1:C10改成实际的范围。 - 如果有多个匹配行,
XMATCH和旧版的INDEX+MATCH只会返回第一个,FILTER会返回全部,根据你的需求选择就行。
内容的提问来源于stack exchange,提问作者Dip
相关产品推荐
相关产品推荐

