一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Excel利用INDIRECT函数怎么用:设置思路梳理

时间:2026-07-14 11:47:52 编辑:袖梨 来源:一聚教程网

indirect函数的核心作用不是直接取值,而是把单元格里存的文本格式地址,转成excel能正常识别的有效引用。当前操作软件:microsoft excel;软件版本:microsoft 365。最常用的用法逻辑很简单:先把要引用的地址写成文本,套进 indirect 里,再把整个结构放到sum、vlookup或者跨工作表引用这类公式里使用。

要是你用的是WPS或者旧版Excel,先确认下软件支不支持这个函数。INDIRECT属于很容易出问题的引用类函数,稳妥点的做法是先在辅助列里把引用文本验证通了,再合并到正式公式里。

第一步

先建一列存「引用文本」,把你要读取的区域直接写成 C5:C5C5:C6C5:C7 这类纯文本内容。这时候直接对这列文本求和,Excel只会把它们当成普通文字,根本不会按你写的区域去做计算。

第二步

直接在求和公式里套上 INDIRECT 就行,举个例子 =SUM(INDIRECT(E5))。这里E5单元格里存的是文本 C5:C5INDIRECT(E5) 会把这段文本还原成真实可识别的区域,再交给SUM做计算。写完把公式往下拖填充,每一行就能根据自己对应的文本地址,算出不同的结果。

第三步

需要根据工作表名动态取值的时候,可以把表名和单元格地址拼接起来。假设B5里存的是工作表名「一月」,写公式 =INDIRECT(B5&"!A1"),就能直接读到「一月」工作表里A1单元格的内容。要是表名带空格或者特殊标点,就得改成 =INDIRECT("'"&B5&"'!A1"),用单引号把表名包起来才不会报错。

函数语法和参数

INDIRECT(ref_text, [a1])的作用就是返回文本字符串指定的引用。公式运行时,Excel会先读取 ref_text 里的内容,再尝试把这段文本解析成你要的单元格、区域、自定义名称或者跨工作表引用。

参数 是否必填 常用写法 说明
ref_text 必填 "A1"E5B5&"!A1" 要转换成引用的文本,可以手工输入,也可以由单元格、连接符或其他函数生成。
[a1] 可选 省略或 TRUE 按 A1 样式解释引用,例如 A1C5:C10。这是默认方式。
[a1] 可选 FALSE 按 R1C1 样式解释引用,例如 R1C1 表示 A1,R5C3 表示 C5。

常见错误

公式返回 #REF! 的时候,先查你写的文本地址是不是真的存在:比如工作表名有没有写错,区域地址里有没有多打多余空格,跨表引用的带特殊字符的表名有没有加单引号。如果返回 #NAME?,大概率是函数名拼错了,或者引号、分隔符打错了。另外要注意,INDIRECT是易失性函数,大量用的话会让结构复杂的工作簿运算速度变慢。

调试的时候可以先把拼接出来的引用文本单独放去一个单元格里,比如先看 B5&"!A1" 算出来的结果是不是真的等于「一月!A1」,确认文本内容完全没问题了,再把这段嵌套进INDIRECT里。比你一上来就写一长串嵌套公式要好定位问题得多。

扩展示例

想对自定义名称区域求和的话,可以把F5单元格内容设成你定义好的名称「销售一组」,直接写 =SUM(INDIRECT(F5)) 就能汇总对应名称区域的所有数值。要批量从各个月份的工作表取数的话,可以让B5:B16区域存好所有月份对应的工作表名,在C5输入 =INDIRECT("'"&B5&"'!B2") 之后往下填充就行。如果想要写一个绝对固定、不会因为插入行列就自动偏移的引用,可以写 =INDIRECT("A1:A100"),但要注意这种写法的引用不会跟着表格结构变化自动更新,正式用的表格里要谨慎这么写。

INDIRECT只适合「引用地址本身需要动态变化」的场景,别没事大规模拿来替换普通引用。能直接写 =SUM(C5:C10) 的地方完全没必要硬套INDIRECT,只有当你要引用的区域、表名或者自定义名称需要靠文本动态拼接生成的时候,它的作用才真正能发挥出来。

热门栏目