在文章开头,我们先来思考一个问题,有一张需要汇总各学科成绩的汇总表和几张各学科的成绩表,现要求将每个学生的各科成绩都汇总到总表中,大家考虑一下,如果是你接到处理这个表格的工作,你会怎么处理!如下:

excel引用另一个工作簿的数据:excel引用函数indirect用法详解-趣帮office教程网

接下来,今天我们介绍单元格引用的另一种方式,间接引用。平时我们在公式中使用单元格区域作参数时,通常是使用单元格的直接引用方式。而今天我们就来介绍通过INDIRECT函数来进行单元格的间接引用。

INDIRECT函数——返回由文本字符串指定的引用。

语法:=INDIRECT(ref_text, [a1])

Ref_text 必需。对单元格的引用,此单元格可以包含A1-样式的引用、R1C1-样式的引用、定义为引用的名称或者对文本字符串单元格的引用。 如果ref_text不是有效的单元格引用,则 INDIRECT 返回#REF! 错误值。

如果ref_text引用为外部引用 (工作簿) ,则必须打开另一个工作簿。 如果源工作簿未打开,INDIRECT 返回#REF! 错误值。

如果ref_text单元格区域超出行限制 或列限制,INDIRECT 返回 #REF! 错误。

ref_text处可以是如"A1:A5"或A1&":"&A5的引用,但不能是如{"A1","A2","A3","A4","A5"}或{A1,A2,A3,A4,A5}的数组。

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

如果 a1 为 TRUE 或省略,ref_text 被解释为 A1-样式的引用。此样式就是我们常用的A5、B7等样式,此样式是默认样式。

如果 a1 为 FALSE,则将 ref_text 解释为 R1C1 样式的引用。此样式R表示行,C表示列,其中的数字表示第几行或第几列,比如,R5C5就表示第5行第5列,也就是E5单元格。

接下来,看几个INDIRECT的基本用法,要求:用indirect函数引用单元格A2里的内容

excel引用另一个工作簿的数据:excel引用函数indirect用法详解-趣帮office教程网

indirect在使用A1这种格式引用时有两种情况,一种是在引用地址两边加双引号的,如方式一,这种方式是直接引用地址所指的单元格内的内容并显示的,另一种是不加双引号的,如方式二,这种方式并不能直接引用地址所指的单元格内的内容,而是要引用这个单元格里的地址指向的另一个单元格内的内容。这就要求被引用地址里的内容必须为一个指向其它单元格的地址,如方式二,否则将返回错误代码值,如最后一个例子。这就是为什么indirect为间接引用函数的原因。

大家可能会有疑问,明明直接引用多么清晰明了还简单,为什么要多此一举,使用间接引用?接下来再介绍两个例子,也许你就能大概感觉得到它的妙用了。

一、使用INDIRECT生成下拉菜单。

excel引用另一个工作簿的数据:excel引用函数indirect用法详解-趣帮office教程网

这里就是先将各城市的区的单元格范围定义成以城市名命名的名称,然后通过INDIRECT引用代表一个城市的所有区的名称来生成下拉菜单。这里要注意的是其中有一步通过Ctrl G快捷打开定位对话框,选中其中常量这里,如果不操作这一步,生成的下拉菜单中会有空值选项。

现在我们回到文章开始提到的问题,大家有想到怎么操作了吗?我想肯定有朋友想到了,只要通过姓名去每张表里通过查找函数就能返回结果。这肯定是正确的,但大家想过没有,这里只有几张表,用这个方法很快就能操作完成,但如果这里需要汇总的不只是这几张表,而是几十上百张,甚至上千张呢,如果也这样一张表一张表的去操作获取,那得做到什么时候,所以这个时候,今天介绍的函数就能体现出它的妙处了,我们来具体操作下。

excel引用另一个工作簿的数据:excel引用函数indirect用法详解-趣帮office教程网

其中B2单元格内的公式编辑为=LOOKUP(1,0/($A2=INDIRECT(B$1&"!A2:A10")),INDIRECT(B$1&"!B2:B10")),这里使用到了lookup函数的乱序精确查找公式,如果对此函数套路不清楚的请查看我之前的文章。一文讲清二分法的查找原理和Lookup的乱序下精确查找套路公式。

这个例子的操作要点:使用表格标题、连接符等构造引用工作表的名称。这里涉及一个工作簿、表中的单元格引用地址的规则。跨工作簿、工作表使用直接引用方式引用单元格规则:='[工作簿名称.xlsx]工作表名称'!单元格地址 ,当所引用的工作簿名称和工作表名称均不是由数字开头,且无运算符、通配符、空格等特殊字符时可以不用单引号。使用indirect间接引用时,就是要构造类似的格式来作为函数间接引用的单元格的参数。另外跨工作簿引用时,所引用的工作簿需要打开,没有打开的需要加上完整的存储地址。

这里每张表里的姓名和顺序和汇总表的姓名和顺序如果完全一样的话,会更简单,不需要查找函数lookup参与,这个大家可以自行去测试。