【EXCEL:人见人怕的Indirect函数】
今天 和大家分享“人见人怕的Indirect函数“,这个函数对于初学者,中级水平的朋友都怕,且看F1帮助也是看的云里雾里一样,下面我听我慢慢道来。
一、参数讲解
- 大家记住返回是单元格对象,区域,当然你按F9返回的就是值了
- 2个参数
- 第1参数:引用单元格的,但是一定要给引用的单元格加双号,这个和我们其它函数不同,也就说它的第1参数是文本,如我们要引用D9单元格,是这样表示的,”D9″,不能直接D9
- 第2参数指单元格的引用样式
- 单元格引用样式分为2种,一种A1引用样式,另一种是R1C1引用样式
- D9单元格就是A1引用样式,R9C4 就是R1C1引用样式,大家可以这样理解Row是行的意思,Column是列的意思,Row9Column4,然后只取第1个字母,得到了R9C4
- 如果第1参数是用的A1引用样式,那么第2参数可以不写,也可以用1;或者True
- 如果第1参数是用的R1C1引用样式,可以用0;或者False,也可以简写成一个逗号,也就是说逗号要留下,后面0,Falses可以不写
二、案例讲解
第(1)个案例:引用D9单元格里“小老鼠”
- A1引用样式,这样表达,=Inidrect(“D9”,1),也可以写成这样,=Inidrect(“D9”,True),也可以简写成=Inidrect(“D9”)
- R1C1引用样式,就这样表达=INDIRECT(“R9C4”,0),也可以写成这样=INDIRECT(“R9C4”,Fasle),也可以简写成=INDIRECT(“R9C4”,)
第2个案例:多工作表按条件求和
- 把1月工作表,2月工作表,3月工作表里数量汇总放到“总表“里,总表A列是条件
- 公式=SUM(SUMIF(INDIRECT({“1月”;”2月”;”3月”}&”!A:A”),A2,INDIRECT({“1月”;”2月”;”3月”}&”!B:B”)))
- 公式解释
3.1、工作表名和单元格之间用感叹号分隔
3.2、{“1月”;”2月”;”3月”}&”!A:A”这样我们就是文本表达了3个工作表的A列,但是如果直接这样放到sumif里是不可以,只有通过indirect函数转一下,就变成了单元格区域A列了,就不是文本了,作为sumif函数第1参数;同理{“1月”;”2月”;”3月”}&”!B:B”作为sumif函数第2参数
3.3、由于indirect构建了多维,这里sumif函数有降维的作用
3.4、最后为什么还要在外嵌套一个sum函数呢,因为一个工作表有一个求和结果,3个表就有3个求和结果,所以最后还要把这3个结果相加
第3个案例:提取取连连的字母
公式=MID(A2,MATCH(,N(INDIRECT(MID(A2,ROW($1:$15),1)&2^20)),),COUNT(N(INDIRECT(MID(A2,ROW($1:$15),1)&2^20))))
公式解释:
- 数组公式,要把光标定位到编辑栏里,然后三键Ctrl+Shift+回车一齐下
- 先用mid把每一个字符分隔MID(A2,ROW($1:$15),1)
- MID(A2,ROW($1:$15),1)&2^20为什么后面要连2^20?这里是把字母和2010最大的行号组合,构建单元格区域的文本表达,水到渠成的indirect函数出场了,一般由于我们最后一行都是不用,空的,所以会返回0
- INDIRECT(MID(A2,ROW($1:$15),1)&2^20)这个公式返回0的错误值,当然我们是找第1个0出现的位置,也就是第1个字母出现的位置,如果直接用match是不行的,因为indirect函数构建了多维,所以要用N函数降维,然后它N(INDIRECT(MID(A2,ROW($1:$15),1)&2^20))才可以作为match函数第2参数
- MATCH(,N(INDIRECT(MID(A2,ROW($1:$15),1)&2^20)),)这个公式就是返回第1个字母出现的位置,这样我们就得到了mid第2参数
- mid第3参数,这个好说,COUNT(N(INDIRECT(MID(A2,ROW($1:$15),1)&2^20)))统计indirect函数数字的个数,就是字母的个数
- 这种解法不是这个题目最好解法,但是如果你看懂了,这个解题方法值得我们学习!
转载请注明:徐自远的乱七八糟小站 » 【EXCEL:人见人怕的Indirect函数】