首页 > 教程攻略 > 软件教程 >Excel利用INDIRECT函数怎么用?设置思路梳理

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

来源:互联网 时间:2026-07-14 09:05:05

INDIRECT函数的核心作用,并不是直接帮你取个数值。它的真正能力,是把你写在单元格里的、单纯的一串文本地址,转换成Excel能识别的有效引用。当前操作环境是Microsoft Excel,版本为Microsoft 365,所以下面的示例都基于这个环境。判断逻辑其实很简单:先把你要引用的地址写成文本,然后套进INDIRECT里,最后把这个整体结构放在SUM、VLOOKUP或者跨工作表引用这类公式中去使用。

假如你用的是WPS或旧版Excel,得先确认一下自己的软件支不支持这个函数。其实,INDIRECT属于引用类函数里比较容易出问题的那一类。稳妥点的做法是,先在辅助列里把引用文本验证通了,再合并到正式公式里,别一上来就硬写。

第一步

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

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

第二步

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

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

第三步

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

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

函数语法和参数

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

参数是否必填常用写法说明
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。只有当你要引用的区域、表名或者自定义名称需要靠文本动态拼接生成的时候,它的作用才能真正发挥出来。这才是它真正的价值所在。