如何通过单元格引用的工作表名称跨工作表获取单元格值?
解决Excel INDIRECT函数动态跨表取值的问题
嘿,我来帮你搞定这个跨表取值的问题!你之前的公式出错主要是字符串拼接的格式不对,而且错误地把单元格的值当成了地址来拼接,导致INDIRECT无法识别有效的引用。
正确的基础公式
直接用这个公式就能实现你的需求:
=INDIRECT("'" & A25 & "'!H25")
为什么你的原公式不生效?
你之前写的=INDIRECT("'" A25 & "'!" & H25)有两个问题:
- 缺少连接符:
"'"和A25之间没有用&连接,Excel会把它当成语法错误; - 错误拼接单元格值:后面的
& H25是把Sheet1中H25单元格的实际值拼进了引用字符串里,而不是单元格地址。比如如果Sheet1!H25是数值100,拼接出来的结果会是'Sheet2'!100,这显然不是一个有效的单元格引用,INDIRECT自然无法返回正确结果。
进阶:动态指定目标单元格地址
如果你不想固定取H25,而是要动态指定目标单元格(比如行号或列号来自其他单元格),可以用ADDRESS函数来生成单元格地址文本:
=INDIRECT("'" & A25 & "'!" & ADDRESS(25,8))
这里ADDRESS(25,8)就是生成H25的地址文本(8对应H列),你也可以把行号和列号换成其他单元格引用,比如ADDRESS(B25,C25),这样就能完全动态控制要取的单元格。
注意事项
- 确保Sheet1!A25里的工作表名准确无多余空格,如果工作表名包含空格或特殊字符,公式里的单引号
'必须保留,否则INDIRECT会找不到对应的工作表; - 这个公式支持所有主流Excel版本(包括WPS表格),不需要额外启用宏。
内容的提问来源于stack exchange,提问作者Pretty_Girl777
相关产品推荐
相关产品推荐

