如何按条件跨Excel多个工作表查找匹配值并返回指定单元格内容
问题排查与解决方案
原有公式出错的核心原因
- 逻辑缺陷:公式中优先取
Sheet2的匹配结果,没匹配到才会查询Sheet3,仅会返回第一个匹配到的C列值。如果同一个查询值在Sheet2和Sheet3各有一个匹配项,第二个匹配项会被完全忽略,自然无法对应到D/E/F列的10/12/15判断条件,最终返回0。 - 类型不匹配:你在IFERROR的默认返回值中写了文本型的
"0",和后续判断的数值型10/12/15做对比时会出现类型兼容问题,也会导致判断失效。
修正后公式
你需要分别查询Sheet2和Sheet3,只要任意一个表中查到对应数值就返回,无匹配结果返回0即可:
- D列(匹配值为10):
=IF(IFERROR(VLOOKUP(A2, Sheet2!$A$2:$D$6, 3, FALSE), 0)=10, 10, IF(IFERROR(VLOOKUP(A2, Sheet3!$A$2:$E$6, 3, FALSE),0)=10,10,0)) - E列(匹配值为12):
=IF(IFERROR(VLOOKUP(A2, Sheet2!$A$2:$D$6, 3, FALSE), 0)=12, 12, IF(IFERROR(VLOOKUP(A2, Sheet3!$A$2:$E$6, 3, FALSE),0)=12,12,0)) - F列(匹配值为15):
=IF(IFERROR(VLOOKUP(A2, Sheet2!$A$2:$D$6, 3, FALSE), 0)=15, 15, IF(IFERROR(VLOOKUP(A2, Sheet3!$A$2:$E$6, 3, FALSE),0)=15,15,0))
优化建议(可选)
如果使用的是2021及以上版本Excel或者WPS,可使用XLOOKUP简化公式,减少重复的VLOOKUP调用:
- D列简化写法:
=IF(OR(IFERROR(XLOOKUP(A2,Sheet2!$A$2:$A$6,Sheet2!$C$2:$C$6,0)=10,FALSE),IFERROR(XLOOKUP(A2,Sheet3!$A$2:$A$6,Sheet3!$C$2:$C$6,0)=10,FALSE)),10,0)
内容的提问来源于stack exchange,提问作者WKI
相关产品推荐
相关产品推荐

