MICROSOFT

EP09. “INDIRECT Function INDIRECT 函数”

首页 Microsoft 工具 Excel · Functions · Lookup & Reference · EP09
约 4 分钟· #EP09#Excel#Lookup & Reference
🔒 登录后可标记已读
  • 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:

  1. Indirect