分享

INDIRECT

 正争 2014-05-21
  • 函数心得
INDIRECT是一个很有用的函数。不过在学习INDIRECT之前,必须弄清楚文本和索引的区别。

比如 A2 单元格的内容是“水果”。如果在 A1 单元格输入=A2,这时候 A2 是一个索引(指向),在 A1 单元格会显示 A2 单元格的内容“水果”。

如果我们在 A1 单元格输入="A2",在 A1 单元格会显示“A2”。因为这时候,"A2" 是一个文本,跟 A2 单元格没有关系。

INDIRECT就可以把这样的一个文本改成索引,比如,在 A1 单元格输入=INDIRECT("A2"),在 A1 单元格会显示 A2 单元格的内容“水果”。

虽然 "A2" 是一个文本,不过通过INDIRECT,我们就可以把文本变成索引了。

那你可能会说,我为什么不直接输入=A2,而要输入=INDIRECT("A2")呢?

这是因为有时候我们需要通过别的公式,计算需要索引的单元格。这样计算出来的单元格索引,一般是文本格式,这就需要用INDIRECT转换了。

比如我们想知道 A 列最后一个单元格的内容,假定 A 列没有空单元格,我们可以用=COUNTA(A:A)得出最后一个单元格的行数。 所以="A"&COUNTA(A:A)就是 A 列最后一个单元格的索引,不过这是文本格式的,如果,我们要知道 A 列最后一个单元格的内容,就要用:

=INDIRECT("A"&COUNTA(A:A))

所以,INDIRECT很多时候都会结合其他文本函数(特别是CONCATENATE)去计算需要索引的单元格。熟悉文本函数对有效使用INDIRECT非常有帮助。

  • 参数描述

引用   以文本形式,指出单元格的引用 (reference) ,可以是“A1”或“R1C1”的样式,也可以直接使用已经定义的名称。

引用类别   引用的类型,可省略。
如果引用类别为 TRUE 或省略,引用采用的是 “A1” 的样式。
如果引用类别为 FALSE,引用采用的是 “R1C1” 的样式。
如果采用的引用是已定义的名称,引用类别是 TRUE 或 FALSE 都可以(一般会省略)。


  • 例子

A B C
1 B1 5 1
2 $B$1 10 2
3 R1C1 15 3
4 定义1 20 4

公式 结果 解释
=INDIRECT("A1") B1 反映 A1 单元格的值。
=INDIRECT(A1) 5 反映 A1 单元格里的引用(即 B1 )的值。
=INDIRECT(A2,TRUE) 5 反映 A2 单元格里的引用(即 $B$1 )的值。
=INDIRECT(A3,0) B1 反映 A3 单元格里的引用(即第一行第一列 R1C1 )的值。(0 和 FALSE 、 1 和 TRUE 可以相互替换。)
=INDIRECT(A4) #REF! 反映定义为 “定义1” 单元格的值,如未定义 “定义1” ,则返回 #REF!
=INDIRECT(A2,0) #REF! 提供的引用引用类别不匹配,返回错误。
=INDIRECT("B"&C1) 5 可以通过 “&” 或其他文本函数提供引用。公式反映 "B"&C1,即 B1 的值。
=INDIRECT("B"&C2) 10 公式反映 "B"&C2,即 B2 的值。
=INDIRECT("R1C"&C1,FALSE) B1 反映 R1C1 的值。
=INDIRECT("R1C"&C2,FALSE) 5 反映 R1C2 的值。

注意:

  • 如果不存在所引用的单元格,函数INDIRECT将返回错误值 #REF!
  • 如果引用是对另一个工作簿的引用(外部引用),则那个工作簿必须被打开。如果源工作簿没有打开,函数INDIRECT将返回错误值 #REF!

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多