如何在所有工作表A列查找指定值并返回对应行B列内容
实现方案
Excel 365/2021及以上版本(最简洁)
使用XLOOKUP+TOCOL组合公式,无需手动罗列所有工作表名,单公式即可完成跨表查询:
=XLOOKUP( 待查询成本编码单元格, TOCOL('*'!A:A,1), TOCOL('*'!B:B,1), "无匹配项", 0 )
参数说明:
'*'!A:A会自动遍历工作簿内所有工作表的A列,如果需要排除汇总表本身,把汇总表拖到所有房间工作表的最左侧即可,或手动指定工作表列表:TOCOL({卧室1,卧室2,客厅,厨房}!A:A,1)- TOCOL的第二参数填1,作用是跳过查询范围内的空值,避免无效数据干扰匹配逻辑
- 如需返回所有匹配到的结果,只要在XLOOKUP的第五参数填
2,会自动溢出所有对应B列的内容,不会出现溢出错误
旧版本Excel(2019及更早)
没有动态数组函数的情况下,用辅助列+VLOOKUP实现:
- 提前在汇总表空白区域(例如D2:D11)列出所有10个房间工作表的名称
- 在每个房间工作表插入辅助列A,填入公式
=B1,把原成本编码列(原A列)改为B列,原描述列(原B列)改为C列 - 汇总表查询公式:
=VLOOKUP( 待查询成本编码单元格, INDIRECT("'"&INDEX(D2:D11,MATCH(TRUE,COUNTIF(INDIRECT("'"&D2:D11&"'!A:A"),待查询成本编码单元格)>0,0))&"'!A:C"), 3, FALSE )
优化建议
- 建议把查询范围限定为实际数据区域(例如
A1:A200而非A:A),减少不必要的计算量,提升运行速度 - 若需避免重复编码匹配优先级问题,可在公式中指定工作表遍历顺序,手动调整工作表列表的排列顺序即可
内容的提问来源于stack exchange,提问作者relee24
相关产品推荐
相关产品推荐

