一、INDIRECT函数
作用:将一个文本字符串解析为有效的单元格引用。你可以把它理解为“给 Excel 念地址,让 Excel 去找到那个地址里的内容”。
公式:=INDIRECT(ref_text, [a1])
●ref_text:一个文本字符串,代表一个有效的单元格引用(如 "A1"、"Sheet2!B5"、"R2C2")或一个已定义的名称(如 "SalesData")。
●[a1]:可选。一个逻辑值,用于指定 ref_text 中引用的样式。
1)TRUE 或省略:表示 ref_text 是 A1 样式(如 "A1"、"C5")。这是最常见、默认的用法。
2)FALSE:表示 ref_text 是 R1C1 样式(如 "R2C2" 代表第2行第2列,即B2单元格)。
二、 INDIRECT工作原理:间接引用 vs. 直接引用
直接引用:公式 =B2 会直接去地址 B2 里取值。如果你把 B2 单元格删掉或移动,Excel 会自动更新公式中的引用,公式可能变成 =C2 或返回错误。
间接引用:公式 =INDIRECT("B2") 也会返回 B2 单元格的值。关键在于:"B2" 是一个躺在公式里的文本。即使你把 B2 单元格剪切到 C2,公式 =INDIRECT("B2") 依然固执地去找那个名字叫“B2”的单元格(此时 B2 已空,可能返回0),而不会自动追踪到 C2。
一句话总结:INDIRECT 创建的是“一成不变”的引用,不会因为工作表结构的变化(如行列增删)而被 Excel 自动调整。
三、基本用法
示例 1:锁定一个不会因增删行而改变的引用
求B列第3行到第7行的销售总和。通常的求和公式:=SUM(B3:B7)
如果第4行上方插入一行,这个公式会自动变成 =SUM(B3:B8),导致结果出错。
解决方案:使用 INDIRECT
求和公式:=SUM(INDIRECT("B3:B7"))
因为 "B3:B7" 是文本,不会被改变。无论你如何增删行,这个公式始终求和原始的 B3 到 B7 这个物理区域。

如何在第4行的上方插入一行

动态求和(可以通过拼接字符串,让引用地址“活”起来)
比如在A1 单元格输入行号(如 5),求和 B列 从 B1 到 B5。
公式:=SUM(B1:INDIRECT("B"&A1))

三、注意事项
1)INDIRECT 是易失性函数,意味着只要工作簿中的任何单元格发生任何计算或修改,INDIRECT 公式都会重新计算。在大型、复杂的表格中大量使用 INDIRECT,会显著拖慢 Excel 的运行速度。
2)对已关闭的工作簿无效:INDIRECT 无法引用一个已经关闭的其他 Excel 文件。它会返回 #REF! 错误。目标工作簿必须处于打开状态。
3)引用样式风险:使用 R1C1 样式 ([a1]=FALSE) 时容易出错,不熟悉的话建议只用默认的 A1 样式。
4)不追踪依赖/从属:由于是文本引用,Excel 的“追踪从属单元格”功能无法识别 INDIRECT 链接到的单元格。调试公式时会比较麻烦。
【示例Excel文件链接地址】
【往期文章回顾】
Excel常用78个函数-3,4,5,6 COUNT,COUNTA,COUNTIF,COUNTIFS函数
Excel常用78个函数-12,13,14,15,16 AND,OR,NOT,TRUE,FALSE函数
夜雨聆风