间接引用函数indirect的基本用法

-01-

函数说明

indirect函数的语法如下,有2个参数:

INDIRECT(ref_text, [a1])

ref_text:必需。对单元格的引用,此单元格包含A1样式的引用、R1C1样式的引用、定义为引用的名称或对作为文本字符串的单元格的引用。如果ref_text不是合法的单元格引用,则INDIRECT返回错误值。
  • 如果ref_text是对另一个工作簿的引用(外部引用),则被引用的工作簿必须已打开。如果源工作簿没有打开,则INDIRECT返回错误值 #REF!。

a1:可选。一个逻辑值,用于指定包含在单元格ref_text中的引用的类型。

  • 如果a1为TRUE或省略,ref_text被视为A1样式的引用。

  • 如果a1为FALSE,ref_text被视为R1C1样式的引用。

这里有个技巧,在一个函数中,如果它的某个参数是由中括号[]括起来的,代表是可选参数,也就是可以写,也可以省略。


-02-

示例解释

在D1单元格中输入下图的公式,结果返回A1单元格的值。是什么意思呢?公式中引用的是B1单元格,B1单元格的内容是"a1",INDIRECT(B1)=INDIRECT("a1"),所以最后返回文本型单元格地址a1的引用。
可以在公式中选中B1,然后按F9查看,如下2图。indirect实际上是引用文本型的单元格地址a1,然后返回它的值。你也可以直接在D1单元格输入公式=INDIRECT("a1"),就返回a1单元格的内容。
在D1单元格中输入公式=INDIRECT("a1:b1"),公式中直接写的文本型单元格地址,结果返回A1:B1这个区域的内容。下图显示错误值#VALUE!是因为在一个单元格中存放了多个数据。可以在编辑栏中选中公式,按F9查看结果,如下第2图所示。
你也可以在C1单元格中输入a1:b1,然后在D1单元格中输入下图的公式,结果是一样的。如果在indirect中你想用单元格引用,那么此单元格中必须有另一个引用;或者你直接写入文本型的单元格地址。
如果想用r1c1的样式返回a1单元格的内容,可以在D1单元格输入公式=INDIRECT("r1c1",),此时第二参数为false或0,或者用逗号留出位置。其实,indirect最后返回的内容是看第一参数中""里边的引用。

-03-
具体应用

1.单列变成多行多列

要把A列的数据转为右表,可以用indirect这个函数实现。

首先需要把A列中对应的单元格地址放到右边中,如下图红框所示。有了下表的单元格地址,就可以用indirect返回对应的单元格内容了。

现在的问题是如何得到上图的单元格地址。先把A去掉只看数字。在G9中输入公式=COLUMN(D1),向右填充出现下图红框数据。在J9中输入公式=ROW(A1)*3-3,向下填充出现0 ,3,6。

然后将2个公式相加,在G9单元格中输入公式=COLUMN(D1)+ROW(A1)*3-3,向下向右填充,结果如下图所示。再在公式前面连接a,就出现了单元格地址。

最后,在C13单元格中输入公式=INDIRECT("a"&COLUMN(D1)+ROW(A1)*3-3),向右向下填充,完成。

好了,indirect的基础用法你学会了吗?它还有更强大的功能, 比如跨表引用,还可以形成多维引用。

(0)

相关推荐