首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

万花筒职业技能-EXCEL的INDIRECT函数用法介绍

INDIRECT函数的用法介绍

INDIRECT函数的作用是返回由文本字符串指定的引用。先举个例子,来点感性认识:

如下图所示,单元格D2中的公式为:

= INDIRECT(A2)

单元格D2中使用公式返回A2的引用值,单元格 A2又引用了B2,B2的值为44.5678,所以D2返回44.5678。如果想直接返回A2单元格中的内容,将公式写为

= INDIRECT("A2"),也就是将A2加上""即可。

1.什么情况下使用INDIRECT函数?

INDIRECT函数返回由文本字符串指定的引用,可以用于:创建开始部分固定的引用;创建对静态命名区域的引用;创建固定的数值组。

INDIRECT函数的语法如下:

INDIRECT(ref_text,a1)

ref_text是代表引用的文本字符串

如果a1为TRUE或者忽略,使用A1引用样式;如果为FALSE,使用R1C1引用样式

注意:

(1)INDIRECT函数是易失的,因此如果在许多公式中使用,它会使工作簿变慢。

(2)如果INDIRECT函数创建对另一个工作簿的引用,那么该工作簿必须打开,否则公式的结果为#REF!错误。

(3)如果INDIRECT函数创建所限制的行和列之外的区域的引用,公式将出现#REF!错误。

(4)INDIRECT函数不能对动态命名区域进行引用

2. 示例:创建开始部分固定的引用

在下面的示例中,列B和列C有相同的数字,使用SUM函数求得的和也是相同的。然而,所使用的公式稍微有点不同。在单元格B7中,公式为:

=SUM(B2:B7)

在单元格C7中,INDIRECT函数创建对开始单元格C2的引用:

= SUM(INDIRECT("C2"):C6)

如果在列表的顶部插入一行,例如输入"高俅"和相关的销售值,列B中的和不会改变,但公式发生了变化,根据被插入的行进行了调整:

=SUM(B3:B7)

然而,INDIRECT函数锁定开始单元格为C2,因此高俅的销售额被自动包括在C列的汇总单元格中。结束单元格改变,但是开始单元格没有受影响。

= SUM(INDIRECT("C2"):C7)

3. 创建对静态命名区域的引用

INDIRECT函数也可以创建对命名区域的引用。在本例中,黄色单元格区域被命名为NumList,在列A中也有一个基于该列的数值数的动态区域Numlistdyn。

通过在SUM函数中使用区域名称,每个单元格都能够计算总和,正如在单元格D3和D4中所看到的:

=SUM(NumList) 或 =SUM(NumListDyn)

换个方式,使用INDIRECT来引用单元格名称,例如,使用在单元格C7中显示的名称NumList,单元格D7中的公式是:

=SUM(INDIRECT(C7))

由于INDIRECT函数不能够解决对动态区域的引用,因此当公式向下复制到单元格D8中时,结果显示#REF!错误。

4. 创建固定的数值组

在一些公式中,需要一组数值,如下图所示,我们想求列B中最大的3个数值的平均值。在公式中,可以输入数值,如单元格D4中所示:

= AVERAGE(LARGE(B1:B9,))

如果需要更多的一组数值,那么可能不想输入这些数值。此时,可以使用ROW函数,如在单元格D5中使用的数组公式:

{=AVERAGE(LARGE(B1:B9,ROW(1:3)))}

还可以将ROW函数和INDIRECT函数联合使用,也是数组公式:

{=AVERAGE(LARGE(B1:B9,ROW(INDIRECT("1:3"))))}

上述3个公式的结果相同。

然而,如果在工作表的顶部插入行,第二个公式返回不正确的结果,因为行数被调整了。现在,显示了第2、第3、第4个最大数值的平均值,而不是求最大的3个数值的平均值。

使用INDIRECT函数,第3个公式保持正确的行引用,并继续显示正确的结果。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180226A0A5XV00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券