EP09. “INDIRECT Function INDIRECT 函数”
🔒 登录后可标记已读- INDIRECT 函数把一段「文本字符串」转换成 Excel 能识别的有效引用
- 涵盖单元格、范围、命名范围,甚至跨工作表引用
- 前置知识不需要
- 学完能理解为什么有些进阶模板会用「文本拼接 + INDIRECT」来做动态引用
重点内容
单元格引用
=INDIRECT(A1) 的运作逻辑:如果 A1 里存的文本是 "D1",那么 INDIRECT(A1) 就等同于 =D1,会去取 D1 单元格实际的值。
如果不用 INDIRECT,直接写 =A1,Excel 只会把 A1 里的内容当成普通文本 "D1" 显示出来,不会去引用真正的 D1 单元格。
搭配 & 运算符可以动态拼接引用字符串,比如用某列字母("D")加上 A1 单元格里的行号数字,拼出一个完整的单元格引用文本再交给 INDIRECT 解析:
=INDIRECT("D"&A1)
范围引用
=SUM(INDIRECT("D3:D6"))
把文本字符串 "D3:D6" 转换成一个真正的范围引用,再用 SUM 求和。
命名范围
假设已经建立了一个命名范围 "Scores",指向 D1:D3:
- 直接写
=AVERAGE("Scores")会返回错误,因为 Excel 会把 "Scores" 当成一段文本,没办法对文本求平均值 - 要写成
=AVERAGE(INDIRECT("Scores")),让 INDIRECT 先把文本 "Scores" 转换成真正的命名范围引用
跨工作表引用
比如 Sheet1 的 A1 是 10,Sheet2 的 A1 是 20,Sheet3 的 A1 是 30:
=INDIRECT(A1&"!A1")
如果某个单元格里存的文本是 "Sheet2",这条公式就会动态引用 Sheet2 的 A1(结果是 20)。
📌 如果工作表名称含有空格或特殊字符,工作表名要用单引号括起来,比如 'Sheet 2'!A1。
学完你会
- ✅ 能用 INDIRECT 把文本字符串转成真正可用的单元格或范围引用
- ✅ 能用
&拼接文本再交给 INDIRECT 解析,做出动态引用 - ✅ 知道 INDIRECT 是易失性函数,大量使用会拖慢工作表运算速度
常见错误
- 忘记 INDIRECT 是易失性函数(volatile function),会在工作表每次重算时都重新计算,大量使用可能拖慢运算速度
- 跨工作表引用时工作表名称含空格却没加单引号,导致公式报错
- 把 INDIRECT 和普通的单元格引用搞混,忘记 INDIRECT 的参数必须是"文本字符串"(或返回文本的公式),不能直接给一个引用
Sources
Blog / Website: