INDIRECT函数,点石能成金
今天咱们来学习INDIRECT函数。
这个函数的作用,是将“具有引用样式的文本字符串,变成真正的引用”。
参数也非常简单:
INDIRECT(具有引用样式的字符串,[引用样式])
如果第二参数为TRUE或省略(包括参数值和逗号),会将第一参数中的字符串解释为A1样式的引用,如果第二参数为FALSE或是0,则将第一参数中的字符串解释为R1C1样式的引用。
具体啥是A1引用样式,啥是R1C1引用样式呢?
咱们日常使用的工作表里,默认就是A1引用样式,也就是用字母列标,用数字表示行号,两者组合到一起,来表示一个单元格的地址:
如果在Excel选项里选中了“R1C1”引用样式,工作表中的行号、列标就会都变成数值。此时使用“R行号C列号”的形式来表示一个单元格的地址:
接下来咱们先看看这个函数的引用过程。
如下图所示,B2单元格中是具有引用样式的字符“E3”,E3单元格中的内容是“我是E3”。
G3使用以下公式,返回结果为“我是E3”。
=INDIRECT(B2)
这个公式里,INDIRECT函数的参数是B2单元格,INDIRECT函数把B2单元格中带有引用样式的字符“E3”变成了E3单元格的实际引用,最终返回E3单元格里的内容。
再看下图中G3单元格中的公式:
=INDIRECT(“E3”)
这个公式里,INDIRECT函数的参数“E3”带有双引号,说明“E3”仅仅是一个文本字符串,而不是单元格地址,INDIRECT函数把带有引用样式的字符“E3”变成了E3单元格的实际引用,最终返回E3单元格里的内容。
接下来看一个多表汇总的实例。
如下图所示,有名为“十里河”、“饮马井”、“大洋路”和“方 庄”的几个工作表,现在要从“汇总”工作表里,汇总这几个工作表中的H列合计数。
在“多表汇总”工作表的C3单元格输入以下公式,下拉:
=SUM(INDIRECT(“‘”&B3&”‘!H:H”))
这个公式里,INDIRECT函数的参数看起来多了一些奇怪的符号,是什么意思呢?
这里面的参数以&为间隔,分成了三段:
“‘” 这部分是一对双引号,中间是一个单引号。其中的单引号就是咱们要得到的字符,一对双引号是在公式中输入字符串时,在字符串外面必须要加上的。
B3 表示B3单元格的地址。
“‘!H:H” 这部分外侧是一对双引号,表示双引号里面是字符串,中间的字符串是’!H:H。
这三部分组合起来,就是带有单引号的工作表名称以及具体的单元格地址了。
咱们在编辑栏中选中 “‘”&B3&”‘!H:H” 这部分,按F9键看看,得到的字符串就是:”‘十里河’!H:H”
在工作表名称前后各有一个单引号,是什么意思呢?
这是因为“方 庄”这个工作表名称里带有空格了,如果引用工作表名称中包含有空格等特殊符号或以数字开头时,就需要在公式中的工作表名前后加上一对半角单引号。而工作表名称中没有空格或特殊符号的,这对单引号加或不加都可以。
INDIRECT函数把字符串”‘十里河’!H:H”变成实际的引用后,再使用SUM函数求和,OK了。
接下来咱们看看INDIRECT函数结合R1C1样式的用法。
如下图所示,要在汇总工作表中,汇总出几个明细表不同月份的总额。
首先来观察一下,在十里河等几个明细表里,1月份的数据在B列,2月份的数据在C列……
在汇总工作表里,C3单元格的公式可以写成这样,然后下拉:
=SUM(INDIRECT(“‘”&B3&”‘!B:B”))
这里是根据C列的店铺名称,来引用同名工作表B列的数据,然后使用SUM函数求和。
但是其他月份的汇总公式,就要把公式中的B:B分别改成C:C、D:D、E:E……才可以。
其实咱们可以在C3单元格输入下面这个公式,然后向下、向右拖动就可以了:
=SUM(INDIRECT(“‘”&$B3&”‘!C[-1]”,))
INDIRECT函数第二参数省略了参数值,仅使用一个逗号占位,表示将字符串解释为R1C1引用样式。
再看这一段字符串”‘”&$B3&”‘!C[-1]”最终是啥结果:
“十里河”是工作表名称。
字符串里面的“C”,表示列,C[-1] 则表示公式所在列左侧一列的整列引用。
咱们让公式以自身所在列为参照,根据B列指定的工作表名称,始终引用这个工作表里,公式所在位置左侧的列。这样当公式向右复制时,就不需要改变表示列的参数了。
版权声明
本文来自投稿,不代表本站立场,转载请注明出处。