INDIRECT函数,它的功能是利用文本名称或区域范围进行间接引用。

语法结构如下:

INDIRECT(ref_text, [a1])。

    ref_text:必需。对单元格的引用,如果 ref_text 不是合法的单元格引用,则 INDIRECT 返回 错误值。

    A1:可选。一个逻辑值,用于指定包含在单元格 ref_text 中的引用的类型。

1、基本用法

如下图,E列中三个公式中第一个是直接引用,后两个是利用INDIRECT函数进行间接引用。

第二个公式中,对A2加了双引号,是一个字符串,该字符串表示是对单元格A2进行引用,返回的结果是B4。

第三个公式中,没有对单元格A2加双引号,表示是对单元格A2中的文本内容“B4”作为名称进行引用,返回的结果是文本字符串。第三个公式与前两个公式的区别清楚了吗?

2、跨表引用

INDIRECT函数不仅可以在同一工作表中进行数据引用,还可以跨工作表和工作簿进行引用。其语法结构如下:

    =INDIRECT(“[工作簿名.xlsx]工作表名!单元格地址”,引用样式参数)

例如下例,将每个月每种型号的数量汇总到总表中。

在单元格B2中输入“=INDIRECT(B$1&”!B”&ROW())”并向下向右拖曳即可。

思路:

  • B$1部分是动态地对工作表“一月、二月、三月”的引用。

  • “!B”&ROW()部分是对工作表“一月、二月、三月”中B列的相应单元格引用。

3、跨表查询

INDIRECT函数还可以和VLOOKUP函数配合进行跨表查询。

在单元格B2中输入“=VLOOKUP($A2,INDIRECT(B$1&’!A:B’),2,0)”并向下向右拖曳即可。

思路:和上例思路相同,只不过变更了引用区域

4、间接引用定义的区域名称,设置二级联动下拉列表

有多种方法可以创建二级下拉列表。下面我们来看看如何利用INDIRECT函数与自定义的区域名称的结合来创建一个省、市的二级联动下拉列表。

首先输入省份和各自对应的城市的名称,然后选中省市区对应信息(表中为A1:G11),选择主菜单中的”公式-名称管理器-根据所选内容创建“,在以下弹出框中,选择”首行“后确定。这样就创建出了首先内容为名称的相关区域,如下:

INDIRECT函数及应用

框选要输入省份的区域(下表为I2:I11),选择”数据“,点击”数据验证“,选择”序列“,来源框中选中省市对应信息表中省份区域(表中为A1:G1)。这样就完成了一级下拉列表的创建。

同样,框选要输入城市的区域(表中为J2:J11),选择”数据“,点击”数据验证“,选择”序列“,在来源框中输入函数”=INDIRECT(D2)”,注意是相对引用。如下:

这样就完成了二级列表的创建了。最后来看看效果图吧!

5、其他应用:补齐用破折号省略的中间数据,为同类型题目提供了新思路!

我们经常会看到这样的省略输入格式:如A1-A9或A11-20这,将连续的数据只写开头和结尾的数字,中间部分全省掉而用一个破折号来代替。后面使用时,即要补全所有数据的情况。如下图。

如何利用公式按照图中要求进行转换?

在单元格B2中输入公式“=IFERROR(INDEX(LEFT($A2)&ROW(INDIRECT(SUBSTITUTE(SUBSTITUTE($A2,LEFT($A2),””),”-“,”:”))),COLUMN(A2)),””)”,三键回车并向下向右拖曳即可。

思路:

  • SUBSTITUTE($A2,LEFT($A2),””)部分,将源数据中的字母去除,得到结果”1-5″

  • 接下来,SUBSTITUTE(SUBSTITUTE($A2,LEFT($A2),””),”-“,”:”)将破折号替换为冒号

  • ROW(INDIRECT(SUBSTITUTE(SUBSTITUTE($A2,LEFT($A2),””),”-“,”:”)))这部分是本题的核心所在。他利用INDIRECT函数配合ROW函数生成了一个自然数序列{1;2;3;4;5}

  • 再配合字符串中的文本字母,生成了单元格序列{“A1″;”A2″;”A3″;”A4″;”A5”}

  • 接下来的就很简单了,INDEX函数可以依次提取各数值并分别输入的不同的单元格中

  • 最后IFERROR函数屏蔽错误值

这个思路的核心就是利用INDIRECT函数和ROW函数生成自然数序列,为我们今后处理这类更复杂的问题提供了基础。

对于有高版本的小伙伴们这个问题就很好解决了。

单元格B2中输入公式“=TEXTJOIN(“,”,1,LEFT(A2)&ROW(INDIRECT(SUBSTITUTE(A2,”-“,”:”))))”,向下向右拖曳即可。

INDIRECT函数+&

合并单元格的反向查询,如下图的公式使用。

函数公式为:

=LOOKUP(“座”,INDIRECT(“A2:A”&(MATCH(D2,$B$2:$B$9,0)+1))

其中,查找“座”字的使用含义:lookup查找汉字是按照汉语拼音的顺序来查找的,座(拼音zuo)已经是拼音中比较靠后的了,所以用“座”可以查找区域中最后一个非空单元格的内容。