如何用Excel INDIRECT函数高效跨多工作表提取批次号至汇总表
使用Excel INDIRECT函数实现跨表数据同步(空值显示空白)
核心公式实现
假设汇总表中:
- 日期行标题从A3开始(A3=1-Jul-23,A4=2-Jul-23,…,A33=31-Jul-23)
- C列对应
Monday工作表,D列对应Tuesday,E列对应Wednesday,F列对应Thursday,G列对应Friday - 各子工作表的批次号从A10开始(A10对应1-Jul-23,A11对应2-Jul-23,…)
在汇总表的C3单元格输入以下公式:
=IF(INDIRECT("'"&CHOOSE(COLUMN()-2,"Monday","Tuesday","Wednesday","Thursday","Friday")&"'!A"&ROW()+7)="","",INDIRECT("'"&CHOOSE(COLUMN()-2,"Monday","Tuesday","Wednesday","Thursday","Friday")&"'!A"&ROW()+7))
公式拆解
CHOOSE(COLUMN()-2,...):根据当前列位置匹配对应的工作表名- C列(COLUMN()=3):3-2=1 → 返回
Monday - D列(COLUMN()=4):4-2=2 → 返回
Tuesday,以此类推
- C列(COLUMN()=3):3-2=1 → 返回
ROW()+7:计算子工作表中对应的行号- 汇总表第3行(ROW()=3):3+7=10 → 对应子工作表A10
- 汇总表第4行(ROW()=4):4+7=11 → 对应子工作表A11,以此类推
INDIRECT("'"&工作表名&"'!A"&行号):构建跨表引用路径,动态提取对应单元格的值IF(...):判断提取值是否为空,为空则显示空白,否则显示提取值,避免出现默认的0
批量应用公式
- 选中C3单元格,鼠标移至单元格右下角的填充柄(小方块),按住左键向右拖动至G3,完成一行的公式填充
- 选中C3:G3区域,再次按住填充柄向下拖动至A33对应的行,即可完成整个表格的公式批量设置
注意事项
- 如果子工作表名包含空格或特殊字符,
INDIRECT中的工作表名必须用单引号包裹(公式中已包含'"&...&"'处理) - 确保子工作表的批次号列确实从A10开始,若起始行不同,调整
ROW()+X中的X值即可(比如子工作表从A11开始,就改为ROW()+8)
内容的提问来源于stack exchange,提问作者Nir1
相关产品推荐
相关产品推荐

