今天介绍一下Indirect函数。这个函数属于特别有用的一个函数,但是很多人并不太了解它的作用。今天我们就详细介绍一下。

INDIRECT函数的工作方式

这个函数的语法特别简单:

indirect函数的使用方法(excel表格中indirect公式如何使用)(1)

INDIRECT(ref_text,[a1])

一般可以不用管第二个参数(缺省即可,表示单元格引用样式),起作用的就是第一个参数。

这个函数的作用就是返回一个引用,这个引用的地址就是第一个参数的文本字符串告诉我们的。

例如:

=INDIRECT("A1")

这个公式返回的是对单元格A1中的引用,显示的是A1中的值

=INDIRECT(A2)

这个公式返回的是对一个地址的引用,这个地址写在A2单元格中。

indirect函数的使用方法(excel表格中indirect公式如何使用)(2)

第一个参数的文本可以是单元格或者单元格区域,以及名称,可以是手工输入的字符串,比如“A1:B20",也可以是其他公式返回的字符串,比如vlookup,或者使用"A" & 20。

需要特别强调一下的是,这个函数返回的是个地址(要么是单元格或者单元格区域,要么是名称),不是一个值。

例如,下面的公式:

=SUM(INDIRECT("A1:A20"))

中INDIRECT("A1:A20")实际上返回的是单元格区域A1:A20,所以该公式等价于”

=SUM(A1:A20)

indirect函数的使用方法(excel表格中indirect公式如何使用)(3)

INDIRECT函数的用法举例

下面我们介绍一些经常用到INDIRECT函数的场景和示例。

利用其他函数生成地址

=SUM(INDIRECT("A1:A"&ROW()))

这个公式是计算A1开始的一列区域的合计,到哪个单元格是根据当前公式所在的单元格的行号决定的,如果公式在C100,那么这个求和区域就是A1:A100。

这里的Row()可以换成其他函数,例如Match返回一个索引位置。

引用其他工作表的地址

=INDIRECT("'[你的Excel文件.xlsx]你的工作表'!你的地址")

这里你的Excel文件,你的工作表,你的地址三部分都可以是动态生成的。

例如:

=INDIRECT("'[" & C1 &"]Sheet1'!A1:A100")

返回的是某个文件的工作表Sheet1的A1:A100区域的引用。这个文件的名字由C1单元格的内容确定。

引用名称

假设,我们有以下数据:

indirect函数的使用方法(excel表格中indirect公式如何使用)(4)

可以定义名称:

indirect函数的使用方法(excel表格中indirect公式如何使用)(5)

就可以根据选择的区域动态求合计:

indirect函数的使用方法(excel表格中indirect公式如何使用)(6)

其实,引用名称还有一个最常见的场景,在做级联下拉列表时,第二个列表必须是:

=INDIRECT(B2)

其中B2是第一个列表,返回的是个字符串,比如“财务部”,于是,这个公式就返回对财务部这个名称的引用(前提是我们必须先定义财务部这个名称)。