Excel 中的 INDIRECT() 函数

2025年3月17日 | 阅读 7 分钟

INDIRECT() 是 Excel 的内置函数。此函数在用户想要组合可以用作有效单元格引用的文本值时提供帮助。传递到此函数中的文本会被转换为单元格引用。然后,如果该转换后的引用单元格包含任何值,则该值将作为结果返回给用户。

例如,=INDIRECT("B5") 它将引用 B5 单元格。

使用此函数的主要目的是从 Excel 工作表中的文本创建单元格引用。INDIRECT() 函数创建动态单元格引用。作为结果值,它返回由文本字符串指定的引用。这是一个非常有趣的函数。

在 Excel 中使用 INDIRECT() 函数

INDIRECT() 函数的功能没有限制,它通过创建动态单元格引用帮助实现各种结果。此公式最大的优点之一是:即使插入/删除了新行或列,它也不会更改引用。

注意:INDIRECT() 函数创建动态单元格引用。

INDIRECT() 函数 可用于通过文本引用单元格。它不对 Excel 数据执行任何算术或逻辑计算。您可以在任何其他函数内部使用它并获得结果。由于动态单元格引用的功能,我们可以在不更改公式本身的情况下更改公式内的单元格引用。

语法

正如其定义一样简单,INDIRECT() 函数的语法也非常简单——

=INDIRECT(ref_text, [a1])

此处,

  1. Ref_text 是引用文本字符串,而
  2. a1 是一个逻辑值,TRUE 或 FALSE。

第二个参数 ([a1]) 是可选参数。如果不传递,INDIRECT() 函数将其视为 TRUE。

  • ref_text 中引用的类型由 a1 指定。
  • 如果 a1 为 TRUE 或在 INDIRECT() 函数中未提供,则 ref_text 被解释为 A1 样式单元格引用。
  • 如果 A1 为 FALSE,则 ref_text 将被视为 R1C1 样式单元格引用。

返回值

INDIRECT() 函数返回在 INDIRECT() 函数中以双引号传递的单元格的引用。

单元格引用样式

有两种类型的单元格引用,即:

  1. A1 样式单元格引用
  2. R1C1 样式单元格引用

两者恰好相反。您应该了解这些样式单元格引用才能理解 INDIRECT() 函数,因为 ref_text 参数的值取决于它。

1. A1 样式单元格引用

A1 样式单元格引用是 Excel 中常见的引用类型。它是首选的样式单元格引用。在 A1 样式单元格引用中,列后面跟一个行号。例如,F3。这里,F 是列号,3 是行号。

2. R1C1 样式单元格引用

R1C1 样式单元格引用与 A1 样式单元格引用正好相反。与 A1 引用不同,行后面跟一个列号。

注意:在此样式中,您必须在第二个参数中提供。

顾名思义 R1C1,R 代表行,C 代表列。例如,R2C4 将引用第二行第四列,即 D2 单元格。如果字母后面没有数字(例如 R3C),则表示我们引用的是同一行和同一列。

INDIRECT() 函数的示例

有几个基本和高级的 INDIRECT() 函数示例。首先,我们将向您展示 A1 和 B1C1 样式单元格引用的基本示例,以解释它们在 Excel 工作表上的工作原理。

示例 1:A1 样式单元格引用

1. 我们在 Excel 工作表中存储了以下数据。在这里,我们将使用 INDIRECT() 函数以 A1 样式单元格引用创建单元格引用。

INDIRECT() function in Excel

2. 现在,编写一个带有文本参数的 INDIRECT() 公式,它将引用一个单元格。例如

=INDIRECT("C5")

INDIRECT() function in Excel

它将引用此工作表的 C5 单元格。

3. 按回车键并获取存储在 C5 单元格中的结果值。

INDIRECT() function in Excel

它返回了存储在 C5 单元格中的值 7,因为 INDIRECT() 函数将 C5 文本转换为了 C5 单元格引用。

注意:如果转换后的单元格引用不包含任何值,INDIRECT() 函数将返回 0。

4. 请注意,我们在 INDIRECT() 函数中传递了 E5 文本字符串,这是 E5 单元格的引用。E5 是一个空单元格。

INDIRECT() function in Excel

5. 按回车键获取结果,您会看到它返回 0,因为 E5 单元格不包含任何值。它是一个空单元格。

INDIRECT() function in Excel

示例 2:B1C1 样式单元格引用

1. 我们在 Excel 工作表中存储了与上面相同的数据。在这里,我们将使用 INDIRECT() 函数以 R1C1 样式单元格引用创建单元格引用。

INDIRECT() function in Excel

2. 编写以下带有 R1C1 文本参数和 FALSE 作为第二个参数值的 INDIRECT() 公式。

=INDIRECT("R5C4", FALSE)

INDIRECT() function in Excel

它指示第五行第四列。因此,它将引用此工作表的 D5 单元格。

3. 按回车键以获取存储在 D5 单元格中的结果值,并查看从中返回的值。

INDIRECT() function in Excel

INDIRECT() 函数返回了 3843,因为单元格引用是 D5。D5 单元格包含内存卡的总价,即 3843。

注意:与 A1 样式单元格引用类似,如果单元格不包含任何值,INDIRECT() 函数在 R1C1 样式单元格引用中也将返回 0。

4. 请注意,我们将 R3C5 文本字符串传递给了 INDIRECT() 函数。这是 E3 单元格的引用,该单元格不包含任何值。

INDIRECT() function in Excel

5. 按回车键获取结果,您会看到它返回 0,因为 E3 单元格不包含任何值。它是一个空单元格。

INDIRECT() function in Excel

以上是使用 A1 样式和 R1C1 样式单元格引用进行的 INDIRECT() 函数最基本和简单的用法。

INDIRECT() 函数与 ROW()

Excel 允许用户在其他函数中使用 INDIRECT() 函数,并在 INDIRECT() 函数中嵌套其他函数。它们共同帮助实现特殊结果并动态工作。

让我们通过一个例子来理解——

步骤 1:我们将通过创建具有 INDIRECT() 和 ROW() 函数的动态单元格引用来获取单元格数据。

使用公式如下

=INDIRECT("B" & ROW())

INDIRECT() function in Excel

首先,ROW() 函数将获取您在 Excel 工作表中所在行的行号,然后该行号将与传递给 INDIRECT() 函数的文本字符串连接,以转换为单元格引用。

步骤 2:获取此公式的动态结果。您会看到它具有值 749,该值存储在 B4 单元格中。

INDIRECT() function in Excel

这里,ROW() 函数返回了行号 4,它与列 B 连接,并通过将其转换为单元格引用返回了存储在 B4 单元格中的值。

INDIRECT() 函数的高级用法

INDIRECT() 函数不仅用于转换简单的单元格引用。此外,它通过允许在其他函数中使用它来提供高级功能。

我们可以将此函数与其他 Excel 函数一起使用或嵌套在其中。例如,通过创建动态单元格引用来计算数字的总和。现在,我们将向您展示一些不同的内容,即 INDIRECT() 函数如何在另一个函数内部使用以获得结果。

示例 1:动态单元格求和

步骤 1:我们有以下数据,这些数据也用于上面的示例。我们将通过创建动态单元格引用来计算单元格的总和。

INDIRECT() function in Excel

步骤 2:编写以下公式以获得产品总数量的动态总和。每个产品的数量都存储在 C 列。

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

INDIRECT() function in Excel

步骤 3:现在,获取 INDIRECT() 函数生成的引用的单元格的总和。您会看到此公式计算出的产品总数为 54。

INDIRECT() function in Excel

同样,我们可以通过用 AVERAGE() 替换 SUM() 来使用此公式计算列数据的平均值。

示例 1:动态单元格平均值

现在,我们将使用 INDIRECT() 函数创建动态单元格引用来计算产品总价的平均值。每个产品的总价都存储在 D 列。

步骤 1:编写以下公式以获得产品总价的平均值。

=AVERAGE(INDIRECT("D2:D8"))

INDIRECT() function in Excel

步骤 2:现在,获取由 INDIRECT() 函数生成的单元格引用中的总价平均值。您会看到此公式计算出的产品总价平均值为 4096.142857。

INDIRECT() function in Excel

看看 INDIRECT() 函数如何与其他函数协同工作。但是,现在您可能在想,INDIRECT() 函数将如何帮助用户。INDIRECT() 函数会锁定单元格引用。

请查看下一个示例,“使用 INDIRECT() 函数锁定单元格引用”。

使用 INDIRECT() 函数锁定单元格引用

通常,我们在 Excel 工作表中添加或删除行和列。这会导致 - 我们用于操作数据的单元格引用自动更改。INDIRECT() 函数可帮助您防止更改单元格引用。

这里,我们有所有产品总数量的总和。一个是用 SUM() 函数简单计算的,另一个平均值是用 SUM() 和 INDIRECT() 函数计算的,即 (SUM(INDIRECT())。

INDIRECT() function in Excel

现在,如果我们要在我们计算了平均值的价格列之前插入新列。看看这对两个公式的结果会产生什么影响。

INDIRECT() function in Excel

在这里,您可以看到工作表中添加了一个新的空白列(B 列),并且列向右移动了。

INDIRECT() function in Excel

结果是数量列的引用从 C 列更改为 D 列,但我们为 C 列创建的引用没有改变。

对计算总和的影响

现在看看它对使用两个公式计算的总和有什么影响。

INDIRECT() function in Excel

这样,我们就使用 INDIRECT() 函数锁定了单元格引用。通过添加或删除通过 INDIRECT() 函数设置的行/列,单元格引用不会改变。

在这里,您可以清楚地看到——

SUM(INDIRECT("C2:C8")) - INDIRECT() 函数用于计算总和的单元格引用仍然相同。由于动态单元格引用,它仍然在计算 C 列的总和,而 C 列当前存储的是价格列的详细信息,而不是数量。

SUM("C2:C8") - 简单 SUM() 公式中的单元格引用已随列的移动而更改。单元格引用从 C 列更改为 D 列,现在它仍在计算 D 列的总和。该列当前存储数量列的详细信息。