Excel INDIRECT()函数
INDIRECT()是Excel内置函数。这个函数帮助用户在想要组装文本值以用作有效的单元格引用时使用。传递给此函数的文本被转换为单元格引用。然后,如果被转换引用的单元格包含任何值,那个值将作为结果返回给用户。
例如,=INDIRECT(“B5”) 会引用B5单元格。
使用这个函数的主要目的是在Excel工作表中从文本中创建单元格引用。INDIRECT()函数创建动态单元格引用。作为结果值,它返回由文本字符串指定的引用。这是一个非常有趣的函数。
在Excel中使用INDIRECT()函数
INDIRECT()函数的功能不限于此,通过创建动态单元格引用,它可以帮助实现不同的结果。这个公式最大的优势之一是,在插入/删除新行或列时,不会更改引用。
注意:INDIRECT()函数创建动态单元格引用。
INDIRECT()函数 对于使用文本引用单元格非常有用。它不对Excel数据执行任何算术或逻辑计算。您可以在任何其他函数中使用它并获得结果。由于动态单元格引用功能,我们可以在不更改公式本身的情况下更改公式中的单元格引用。
语法
和定义一样简单,INDIRECT()函数的语法也非常简单-
在这里,
- Ref_text 是引用文本字符串,并且
- a1 是一个逻辑值,TRUE或FALSE。
第二个参数([a1]
)是一个可选参数。当它未传递时,INDIRECT()函数将视为TRUE。
- ref_text中的引用类型由a1指定。
- 如果a1为TRUE或在INDIRECT()函数中未提供,则将ref_text解释为A1样式的单元格引用。
- 如果a1为FALSE,则ref_text将被视为R1C1样式的单元格引用。
返回值
INDIRECT()函数返回以双引号内传递给INDIRECT()函数的文本所代表的单元格引用。
单元格引用样式
有两种类型的单元格引用,即
- A1样式的单元格引用
- 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样式的单元格引用。
2. 现在,使用一个文本参数编写一个INDIRECT()公式,将其引用到一个单元格。
例如 ,
=INDIRECT("C5")
这将引用此工作表的C5单元格。
3. 按下 Enter 键,获取存储在C5单元格中的结果值。
通过将C5的文本转化为C5单元格引用,INDIRECT()函数返回存储在C5单元格中的值7。
注意:如果转换后的单元格引用不包含任何值,INDIRECT()函数将返回0.
4. 我们可以看到在INDIRECT()函数中传入了E5的文本字符串,这是对E5单元格的引用。E5是一个空单元格。
5. 按下 Enter 键,查看结果,会发现返回值为0,因为E5单元格中没有任何值。它是一个空单元格。
示例2:B1C1样式的单元格引用
1. 我们在Excel工作表中存储了与上述相同的数据。在这里,我们将使用INDIRECT()函数来创建一个R1C1样式的单元格引用。
2. 用R1C1格式和FALSE作为第二个参数值编写以下具有文本参数的INDIRECT()公式。
=INDIRECT("R5C4", FALSE)
它指示到第五行和第四列。因此,它将引用此工作表的D5单元格。
3. 按 Enter 键获取存储在D5单元格中的结果值,并查看从中返回的值。
间接()函数返回了3843,因为单元格引用是D5。D5单元格中包含了内存卡的总价,即3843。
注意:与A1样式的单元格引用类似,如果一个单元格没有任何值,间接()函数在R1C1样式的单元格引用中也会返回0。
4. 看到我们将R3C5文本字符串传递给了间接()函数。这是对包含任何值的E3单元格的引用。
5. 按下 Enter 键获取结果,并看到它将返回0,因为E3单元格中不包含任何值。它是一个空单元格。
这些是使用INDIRECT()函数使用A1风格和R1C1风格单元格引用的最基本和简单的用法。
带ROW() 的INDIRECT()函数
Excel允许用户在其他函数内使用INDIRECT()函数和将其嵌套在INDIRECT()函数内的其他函数。它们一起帮助实现特殊的结果并实现动态工作。
通过一个例子来理解:
步骤1: 我们将使用INDIRECT()和ROW()函数创建动态单元格引用来获取单元格数据。
以以下方式使用公式:
=INDIRECT("B" & ROW())
首先,ROW()函数将获取您的控制在Excel工作表中的行号,然后与传递给INDIRECT()函数的文本字符串连接起来,以转换为单元格引用。
步骤2: 获取此公式的动态结果。请注意,其值为749,存储在B4单元格中。
在这里,ROW()函数返回了行号4,它与列B连接并将B4单元格中存储的值转换为单元格引用后返回。
INDIRECT()函数的高级用法
INDIRECT()函数不仅用于转换简单的单元格引用。此外,它还通过允许在另一个函数中使用它来提供高级功能。
我们可以将此函数与其他Excel函数一起使用,或将其嵌套在其中。例如,通过创建动态单元格引用来计算数字的总和。现在,我们将展示不同的用法,即如何在另一个函数中使用INDIRECT()函数来实现结果。
示例1:动态单元格的总和
步骤1: 我们有以下数据,这些数据也在上面的示例中使用。我们将通过创建动态单元格引用来计算单元格的总和。
步骤2: 将以下公式写入以获得产品总数量的动态和。每个产品的数量存储在C列中。
=SUM(INDIRECT("C2:C8"))
步骤 3: 现在,获得由INDIRECT()函数生成的引用的单元格的总和。注意,使用此公式计算出的产品总数为54。
同样,我们可以使用这个公式来计算列数据的平均值,将SUM() 替换为AVERAGE()。
示例2:动态单元格的平均值
现在,我们将使用INDIRECT()函数创建动态单元格引用来计算 总价 的平均值。每个产品的总价存储在D列中。
步骤1: 写入以下公式来获取产品总价的平均值。
=AVERAGE(INDIRECT("D2:D8"))
步骤2: 现在,使用INDIRECT()函数生成的单元格引用,求取总价格的平均值。 可以看到,通过这个公式计算得出产品总价格的平均值为4096.142857。
看看INDIRECT()函数如何与其他函数配合使用。但现在,您在思考这个INDIRECT()函数如何帮助用户。INDIRECT()函数锁定单元格引用。
查看下一个示例,”使用INDIRECT()函数锁定单元格引用”。
使用INDIRECT()函数锁定单元格引用
通常,我们在Excel工作表中添加或删除行和列。这会导致 – 我们用于操作数据的单元格引用自动更改。INDIRECT()函数帮助您防止更改单元格引用。
这里,我们有所有产品总数量的总和。一个是简单地使用SUM()函数计算的,另一个是使用SUM()和INDIRECT()函数计算的平均值,即(SUM(INDIRECT())。
现在,如果我们在 “Price” 列的前面插入一个新的列,这一列是我们计算平均值的列。看看这将如何影响这两个公式的结果。
在这里,您可以看到工作表中添加了一个新的空白列(列B),并且列向右移动。
结果是,数量列的引用从列C更改为列D,但我们为列C创建的引用没有更改。
对计算总和的影响
现在看看它如何影响使用这两个公式计算的总和。
通过使用INDIRECT()函数,我们锁定了单元格引用。通过INDIRECT()函数设置的行/列增加或删除时,单元格引用不会改变。
在这里,您可以清楚地看到-
SUM(INDIRECT(“C2:C8”)) – INDIRECT()函数创建的单元格引用仍然是相同的。由于具有动态单元格引用,它仍然计算列C的总和,该列目前存储的是 Price 列的详细信息,而不是Quantity。
SUM(“C2:C8”) – 在简单的SUM()公式中的单元格引用随着列的移动而改变。单元格引用从列C变更为列D,现在它仍然计算列D的总和。该列当前存储的是Quantity列的详细信息。