Excel中查找引用函数在使用上十分灵活,很多强大的功能都是利用查找引用函数进行函数嵌套实现的,而indirect函数算是查找引用函数中参数最少的函数 , 但是它的用法并不比其他函数简单 , 与其他Excel功能结合非常神奇,现在就一起看看indirect函数的用法吧
一:indirect函数基本含义
indirect函数的参数有两个,即=indirect(引用的单元格,引用方式) 。我们平时使用的工作表行都是用阿拉伯数字表示,列都是英文大写字母表示 , 所以这里的第二个参数往往都会省略 。所以平时使用indirect函数时只考虑一个参数即可 。
在下图中的C1单元格输入函数=INDIRECT(A1),计算结果是“疏木excel”,因为A1单元格的内容是A7,表示工作表中的一个单元格,所以会返回A7单元格的数据,即“疏木excel” 。
但是如果在函数参数中的A1加上双引号,即输入函数=INDIRECT("A1"),那么这里的A1就是一个文本 , 不会引用到A7单元格的数据 。
如果利用indirect函数实现跨表引用 , 那么输入函数公式=INDIRECT(A2&"!B2"),表示引用的是A2单元格中表示的工作表中B2单元格的数据 , 即“五班”这个工作表B5单元格的内容 。引用工作表通常使用感叹号连接 , 并且引用的单元格需要加上双引号 。

二:indirect函数查找数据
indirect函数可以用来进行二维数据表的查找 。在下表中 , 要根据姓名查找相应人员的性别、学历、身份证号等信息 , 利用indirect函数进行查找甚至要比vlookup函数和index—match函数更简单 。只要先对A1到F9的数据源区域根据首行和最左列定义名称后 , 在B14单元格中输入函数公式=INDIRECT($A14) INDIRECT(B$13) , 然后向右,向下拖动鼠标填充公式即可完成查找 。
【Excel中的indirect函数,只用一个参数也能实现这么多功能】因为利用函数之前已经定义了行或者列的名称,所以用indirect函数可以引用一行或者一列的数据 。这里用了2个indirect函数 , 中间用空格隔开,表示交叉运算符,返回两个函数引用数据的交集 。第一个indirect函数对A14单元格的列A列采用绝对引用,因为我们向右拖动查找信息时,人名始终保持不变 。同理,第二个indirect函数B13单元格对行采用绝对引用,向下拖动时始终根据信息类别查找,即固定“姓名”、“学历”等单元格 。

动图操作如下:

三:制作二级下拉菜单
制作二级下拉菜单属于indirect函数的经典用法了,主要思路是利用数据验证(数据有效性),操作步骤如下:
- Ctrl A全选数据源区域 , 按F5定位到“常量”,然后选择【公式】选项卡中的【根据所选内容创建】,选择【首行】,然后打开【名称管理器】可以看到定义好的名称 。
- 选择G2到G6单元格 , 选择【数据】选项卡下的【数据验证】,【允许】中选择【序列】,【来源】选择A1到E1单元格 。
- 选择H2到H6单元格 , 选择【数据】选项卡下的【数据验证】,【允许】中选择【序列】 , 【来源】输入函数公式=INDIRECT(G2),按确定关闭后就完成下拉菜单的制作了 。

四:indirect函数的跨表引用
在文章的开始提到了indirect函数可以引用工作表 , 用感叹号隔开以示区分,所以我们可以利用indirect函数的跨表引用功能可以查找多个工作表的数据 。
在下图中,有“一组”、“二组”、“三组”三个工作表,现在我们要在一个新的工作表中进行查找这三个工作表的数据,那么在C2单元格中输入公式=INDEX(INDIRECT(A2&"!C:C"),MATCH(B2,INDIRECT(A2&"!B:B"),0)) , 然后向下拖动即可 。
这个函数整体是一个index—match函数的组合进行查找 , 只是在查找中利用indirect函数根据A列单元格表示的工作表实现跨表查找 。其中INDIRECT(A2&"!C:C")表示的是查找结果返回A2单元格表示的工作表的C列数据,即销量列 。INDIRECT(A2&"!B:B")表示在A2单元格表示的工作表中查找姓名 。
?

这就是Excel中indirect函数的几种常见用法,还有offset函数和其他函数组合也十分神奇 , 如果有兴趣,欢迎可以点此链接查看offset函数的用法:
