函数INDIRECT详解(indirect函数怎么用)

INDIRECT:返回文本字符串所指定的引用。

如下图,“汇总表”中引用工作簿“第一季度”中工作表“2月”上的B2单元格,公式如下:

='[第一季度.xlsx]2月'!B2

上述公式中除了等号的部分可视为一个文本字符串,而这个字符串描述的是一个地址,这个地址指向某表格中的单元格。

把文本字符串作为INDIRECTD的第一参数:

=INDIRECT("'[第一季度.xlsx]2月'!B2")

同样实现了对目标单元格的引用。


INDIRECT文本字符串格式

直接引用:='[第一季度.xlsx]2月'!B2
INDIRECT引用:=INDIRECT("'[第一季度.xlsx]2月'!B2")

对比两个公式可以看出:INDIRECT第一参数文本字符串格式应该与直接引用的格式相同。

格式相对固定,总结如下图。

记不住?完全没关系,需要的时候做个引用公式依葫芦画瓢即可。


构建地址

已知要引用单元格的详细地址,接下来就是要构建文本字符串。

可以用任何能想到的方式来构建文本字符串,只要满足固定格式。

把字符串拆得七零八碎,再用CONCAT拼装回来作为INDIRECT的参数:

=INDIRECT(CONCAT(A1:A6))

整个地址中工作簿放到单元格中,构建地址文本字符串时引用单元格,除此之外的字符文本手动输入并连接。最终的结果符合格式要求,也可作为INDIRECT的参数:

=INDIRECT("'["&A2&".xlsx]"&"2月'!B2")

INDIRECT+VLOOKUP跨表查找

目的:从“第一季度”中查找所有产品每个月的数据。

“第一季度”中三个工作表“1月”,“2月”,“3月”的A列和B列存放数据。

INDIRECT引用数据区域:

=INDIRECT("'[第一季度.xlsx]"&B$1&"'!$A$2:$B$10")

这里的关键是公式中引用B1单元格存放的工作表名称,后续填充公式时动态变化。

用VLOOKUP在引用回来的数据区域中查找产品的数据:

=VLOOKUP($A2,INDIRECT("'[第一季度.xlsx]"&B$1&"'!$A$2:$B$10"),2,0)

查找不到的返回错误值,可以用IFERROR进一步处理。

被引用数据的表格开启时公式正常工作,否则报错“无效的单元格引用”。