快速链接
INDIRECT 函数的作用是什么?
INDIRECT 语法
使用 INDIRECT 函数前需牢记的事项
如何使用 INDIRECT 函数
您或许在 Excel 中使用单元格引用已经习以为常,但您是否知晓还能更进一步去创建属于自己的单元格引用呢?这时候,INDIRECT 函数就能大显身手啦。
INDIRECT 函数的作用是什么?
Excel 的 INDIRECT 函数将文本字符串转换为引用。这个函数有好几项实际的好处:
- 它允许您创建动态引用。例如,您可以在公式内更改对单元格的引用,而无需更改公式本身。
- INDIRECT 函数是在工作簿内的工作表之间创建链接的好方法。
- 您可以使用电子表格中已有的信息创建引用。
- 使用 INDIRECT 函数创建的引用将保持不变,即使您的工作表结构发生变化。
INDIRECT 语法
默认情况下,Excel 中的引用使用A1 引用样式,这意味着它首先引用列,然后是行号。但是,INDIRECT 函数使您能够将它们颠倒。
这种颠倒过来的顺序被称作 R1C1 引用样式,其中“R”代表行,“C”代表列。因此,INDIRECT 函数包含两个参数。以下是语法:
=INDIRECT( x, y)
其中x是引用文本,y(可选)是引用样式。
更具体地说,x(引用文本)可以是 A1 样式的引用、R1C1 样式的引用、预定义名称或单元格引用。如果x引用另一个工作簿,则该第二个工作簿必须打开。还值得注意的是,如果您使用的是 Excel 网页版,则无法引用另一个工作簿。
y(引用样式)是一个可选参数。如果您选择不包含此参数,Excel 将自动使用默认的 A1 样式引用,不过您也可以在此处输入TRUE强制 Excel 使用此引用样式。输入FALSE将告诉 Excel 使用 R1C1 引用样式。
在这篇文章里,我会用 A1 样式的引用来给您展示 INDIRECT 函数的工作原理。一旦您把它的概念掌握住了,您就可以试着用用 R1C1 样式的引用。
INDIRECT 函数的结果是一个引用。
使用 INDIRECT 函数前需牢记的事项
在电子表格里开始用 INDIRECT 函数之前,您得知道这么几件事:
- 这是 一个易失性的函数,意思就是它老是不停地尝试更新。要是在大型的电子表格里用这个函数,可能会让它运行得很慢,甚至出故障。
- 要想把 INDIRECT 函数用得充分,您首先得了解 在 Excel 里怎么创建命名引用。
- 与号(&)运算符是创建可用作引用的文本字符串的好方法。
如何使用 INDIRECT 函数
为了让您清楚在实际操作中怎么用 INDIRECT ,咱们来瞧瞧它最基本的形式是咋工作的。
基本示例
在这个例子里,在单元格 B2 里输入
=INDIRECT(A1)
会把单元格 A1 变成对单元格 D1 的引用。这就是为啥结果是 5 。
在这个例子里,在单元格 B2 里输入
=SUM(INDIRECT(A2))
先把 A2 转成单元格引用,然后对这个引用里的单元格求和。这是因为 INDIRECT 函数嵌在 SUM 函数里头。
现在,让我们看看使用 INDIRECT 函数引用另一个工作表中的单元格。Sheet2 的单元格 A1 包含数字 100,我们想在当前的工作表里创建对这个单元格的 INDIRECT 引用。首先呢,我们得在单元格 A3 里输入 Sheet2!A1 ,然后通过在单元格 B3 里输入
=INDIRECT(A3)
将其转换为引用。
然而,我们可以通过使用命名引用让这轻松许多。例如,如果我们将 Sheet2 的单元格 A1 重命名为总计,我们可以在 INDIRECT 引用中使用它。要是您正在创建针对另一个工作表的引用,这特别方便,因为它有助于您避免记住语法中的感叹号。此外,如果您的工作表名称更改,INDIRECT 引用将不会适应此更改,因此使用命名引用是更安全和永久的替代方法。
真实世界示例 1
既然我们了解了 INDIRECT 的工作原理,让我们探讨如何在现实世界中使用它来使我们的工作表发挥作用。
在 Excel 中经常是这样,达成相同结果的办法不止一种。例如,您可以包含TAKE 函数以使以下过程更具动态性。但是,我们这里的目的是举例说明 INDIRECT 函数的使用,好让您之后能按照自己的方式去用它。
在这里,我们正在跟踪一支足球队在每场比赛中的进球数,并且我们想要计算出前三场比赛的平均值。
首先,我们将使用COUNT 函数来计算球队到目前为止已经进行了多少场比赛。在单元格 E1 中输入
=COUNT(B:B)
会算出 B 列里包含数字的单元格的总数,从而告诉我们已经进行了多少场比赛。
如果您想计算文本和数字,请使用COUNTA 函数代替。
现在,我们准备使用 INDIRECT 函数将单元格 E1 中的数据转换为引用。这时候,我们的目标是算出单元格 B6 到 B8 中的值的平均值。以下是 INDIRECT 函数将如何帮助我们做到这一点。首先输入
=AVERAGE(INDIRECT
在单元格 E2 里,因为我们告知 Excel 最终是要得出平均值,而且我们还运用 INDIRECT 函数告知 Excel 到何处去查找从而计算这个平均值。
在我们的 AVERAGE 计算里,我们要引用的第一个单元格是 B8,所以我们要添加
=AVERAGE(INDIRECT ("B"&E1)
到我们的公式里。请注意,我们为啥要在列引用的周围使用引号,因为我们正在用这个文本创建单元格引用。
在我们的 AVERAGE 计算中,我们接下来要引用的单元格是 B7,它比 B8 往上一个单元格。所以,添加
=AVERAGE(INDIRECT("B"&E1) ,INDIRECT("B"&E1-1)
到我们的公式意味着 Excel 会创建一个从 B 列开始的单元格引用,接着从 E1 中的值减掉 1。
最后,在我们的 AVERAGE 计算里,我们想要引用单元格 B6,它比 B8 往上两个单元格,然后加上右括号:
=AVERAGE(INDIRECT("B"&E1),INDIRECT("B"&E1-1) ,INDIRECT("B"&E1-2))
这正确算出了 3、1 和 1 的平均值,这就是过去三场比赛中的进球总数。
现在,当我们给 B 列添加更多数据的时候,单元格 E1 里的值就会增加,因为 COUNT 函数能识别出 B 列中有更多的值,而且 INDIRECT 引用也会相应更新,一直能在我们的 AVERAGE 公式里抓取到最后三个值。所有这些操作都不用更改我们输入到单元格 E2 里的公式。
真实世界示例 2
咱们再来看一个例子。这一回,我们要用命名引用,这样就能在Excel 的 VLOOKUP 函数里使用 INDIRECT 了。
我们想让 Excel 告诉我们这四个人在第 1 周或者第 2 周各自赚了多少钱,而且如果有需要的话,还能更改那个周数。
首先,我们需要将单元格 B1 到 C5 命名为“week_1”,将单元格 B7 到 B11 命名为“week_2”。然后,在 G2 单元格里,我们将输入
=VLOOKUP(E2,INDIRECT("week_"&F2),2,0)
因为我们想让 Excel 在我们命名为“week_1”的这个范围内查找汤姆(Tom)的值,然后返回这个范围第二列里对应的精确匹配值。
然后我们就可以用填充柄来为其他三个人完成数据,要知道我们创建的引用既与他们各自的行相关,又因为我们使用了命名引用而有保障。
然后,对 C 列或 F 列中的值的任何更改都会自动应用于我们刚刚编写的公式。
要完成让您的电子表格完全动态且整洁的这个过程,您可以用 Excel 的数据验证工具添加下拉菜单 。在上面的示例中,您可以通过下拉菜单访问个人的姓名,以便查找表仅占用一行。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.