Excel 2016使用INDIRECT实现工作表与单元格双重动态引用问题
公式报错原因及正确写法
报错原因
你修改后的=INDIRECT("'"&$L$2&"'!"&B33)逻辑为读取B33单元格内的内容作为目标单元格地址,而非将B33本身作为引用位置。如果B33单元格存储的是数值而非合规的单元格地址文本,就会返回#REF!错误。
正确公式(分两种适用场景)
- 全动态适配(支持上下左右拖动填充,行号列号同步自动调整)
公式:=INDIRECT("'"&$L$2&"'!"&ADDRESS(ROW(B33),COLUMN(B33)))
说明:ROW(B33)返回当前引用行的行号,COLUMN(B33)返回当前引用列的列号,ADDRESS函数将两个数值拼接为标准单元格地址文本,随公式拖动自动更新对应值。 - 列固定仅行动态(所有引用均在B列,仅需向下拖动填充行号)
公式:=INDIRECT("'"&$L$2&"'!B"&ROW(B33))
说明:直接固定列标识为B,仅动态拼接行号,公式更简洁,计算效率更高。
补充说明
公式中保留工作表名两侧的单引号是兼容写法,无论目标工作表名称是否包含空格、特殊字符,都可以正常识别,无需额外调整。
内容的提问来源于stack exchange,提问作者Cy Bu
相关产品推荐
相关产品推荐

