Excel中如何基于两个条件在数组中查找对应位置?
解决方案
你使用INDEX+MATCH组合返回错误结果,基本都是多条件匹配逻辑、参数设置不符合需求导致的,针对行列双条件匹配的场景(对应你截图的需求),可直接套用以下两种方案:
方案1:全版本兼容的INDEX+MATCH写法
公式模板:
=INDEX(结果数据区域, MATCH(行匹配值, 行匹配范围, 0), MATCH(列匹配值, 列匹配范围, 0))
参数说明:
- 最后的
0代表精确匹配,必须填写,漏写会触发默认的模糊匹配逻辑,直接返回错误结果 - 行匹配范围的行数需要和结果数据区域的行数完全一致,列匹配范围的列数需要和结果数据区域的列数完全一致
- 存在重复匹配项时,会默认返回第一个命中的结果
举个实际套用示例:假设你的表格里产品名称在A2:A20,月份表头在B1:M1,销售数据区域在B2:M20,要查询的产品名存放在O2、查询的月份存放在P2,公式写为:=INDEX(B2:M20, MATCH(O2,A2:A20,0), MATCH(P2,B1:M1,0))
方案2:Excel 2021/365专属简化写法
用双层XLOOKUP实现,逻辑更清晰,不需要对齐行列范围:
=XLOOKUP(行匹配值, 行匹配范围, XLOOKUP(列匹配值, 列匹配范围, 结果数据区域))
对应上面的示例,公式可以简化为:=XLOOKUP(O2,A2:A20,XLOOKUP(P2,B1:M1,B2:M20))
额外补充:多条件行匹配写法
如果你的需求是要同时匹配两个及以上的行维度条件(比如同时匹配产品名+所属分类两个条件),可以用数组形式的MATCH逻辑:=INDEX(结果数据区域,MATCH(1,(条件1范围=条件1值)*(条件2范围=条件2值),0))
旧版Excel输入完公式后需要按Ctrl+Shift+Enter三键触发数组计算,365/2021版本直接回车即可。
内容的提问来源于stack exchange,提问作者user10157300
相关产品推荐
相关产品推荐

