前言:如果评谁是Excel最牛X的函数,兰色肯定推选Indirect函数,因为其他函数大多可以被某他函数替代,而indirect独特的作用在Excel中独此一个,无可替代。而且它应用非常广泛。兰色这次花费了三天时间,整理出了indirect函数从入门+初级+进阶+高级应用的全系列教程,希望对想全面学习indirect函数的同学们有所帮助。今天是入门篇+初级篇。
一、Indirect函数入门篇
1、作用
返回文本字符串所指定的引用
所谓文本字符串,是指看似是引用,却是文本类型的。如:
两边带双引号的引用地址。
="A1"
="Sheet!A1"
="[工资表.xlsx]Wifi信息图!$J$3"
返回引用,是把上面文本类型的转换为可以返回值的引用。
下面的公式返回的是字符“A1”,并不是A1单元格的值100
="A1"
而外面套上indiect函数则可以把字符串A1转换为引用A1
=INDIRECT("A1")
2、语法
=indirect(ref_text,[a1])
语法说明:
ref_text:就是前面提到的文本型引用字符串
a1:引用的字符串样式。Excel单元格引用有两种方式,一种是字母+行数,另一种是R1C1样式(R后数字是行数,C后数字是列数)。当[a1]的值为true、1或省略时表示为A1样式引用,当值为FALSE或0时表示R1C1引用样式。
[ ] :带中括号的参数表示它可以有,也可以省略。
【例1】引用单元格C5的值
=INDIRECT("c5",TRUE)
或
=INDIRECT("c5",1)
或
=INDIRECT("c5")
也可以表示为:
=INDIRECT("R5C3",FALSE)
或
=INDIRECT("R5C3",0)
二、Indirect函数初级篇
引用单元格这么简单的公式,被indirect弄的这么复杂,有什么用?原因就在于:地址字符串中可以插入变量
1、在单元格引用地址中插入变量
【例2】如下图所示,根据D2单元格行数,从A列提取数字。
E2公式:
=INDIRECT("A"&D2)
这儿字母后不再是固定的数字,而是一个可变的值(根据D2的值变量而变化)
如果借用随机函数,就可以实现随机出题/抽奖的功能了。
【例3】设置公式从A列随机抽出一位幸运者。
=INDIRECT("A"&RANDBETWEEN(1,18))
2、在工作表名称中插入变量
如果把工作表名称作为变量,那么就可以利用indirect动态引用不同的工作表的值。前天兰色分享的Vlookup多表取值是不是也懂了?
【例4】Vlookup从多表取值
B3公式:
=IFERROR(VLOOKUP($A3,INDIRECT(B$2&"!A:B"),2,0),"")
公式向右复制时,B$2会变为C$2, D$2.....这样就可以根据第2行的值,从对应名称的工作表中区域中查找。
3、在工作簿名称中插入变量
如果把工作簿名称设置为变量,就可以从不同的Excel文件中动态取数了。
【例5】如下图所示,用vlookup根据A列的月份和产品,从本路径下的1~3月销售的文件中查找销量。
=VLOOKUP(B2,INDIRECT("["&A2&"销量.xlsx]Sheet1!$A:$B"),2,0)
4、把定义的名称作为变量
当字符串是定义的名称时,用inidect函数也可以把字符串转换为定义的名称。
还记得那个已为大众所熟悉的二级下拉菜单公式吗?
【例6】根据A列的品牌名称,在B列生成对应的型号下拉菜单。
先定义名称
然后选取要设置二级下拉菜单的区域,设置数据有效性公式
=indirect(a2)
这儿a2的值只是字符串,用indirect可以把字符串转换为定义的名称。
兰色说:如果你以为掌握了今天的内容就学会了indirect函数,就太天真了。本篇只是indirect函数的初级用法,在下一集“进阶+高级”篇中,你才会见识这个Excel中最牛函数的强大之处。
领取专属 10元无门槛券
私享最新 技术干货