多语言展示
当前在线:780今日阅读:176今日分享:34

EXCEL中嵌套函数的设计思路

EXCEL中有400多个函数,有些需求用单一函数即可完成任务,比如求和,用SUM函数即可达到目的,多数需求用单一函数是无法完成的,需要多个函数组合起来使用才能达到目的。
工具/原料
1

电脑

2

EXCEL软件

方法/步骤
1

EXCEL中为了达到某种目的,常常需要多个函数一起使用,某个(些)函数的结果作为另一个函数的参数,而这个函数又可能作为其它函数的参数,就这样一层一层的设计出公式,这种用法称为嵌套,版本不同,嵌套函数的允许层数也不同,2003版及以前最多只能有7层,此后的版本允许64层,超过7层的公式比较常见,但达到64层的几乎看不到,一般嵌套得比较多的也就十几层吧。

2

嵌套函数是以某函数的结果作为它函数的参数,所以这个函数的结果必须满足它函数的参数类型,否则就会出错。比如要返回单价,VLOOKUP函数的第三个参数应该用2,但现在用的是COLUMN(A:A),结果为1,所以返回值并不是单价。

3

将第三参数改为COLUMN(B:B),即公式改为:=VLOOKUP(D2,A:B,COLUMN(B:B),0),即可得到正确结果。

4

嵌套函数的编辑,可以从外向内,也可以从内向外,或者内外结合。最常见最简单的嵌套函数要数IF函数的嵌套了,比如要将A列的分数改为等级,当分数小于60返回“不及格”、大于等于60小于80返回“及格”,大于等于80小于90返回“良”,大于等于90返回“优”,就可以使用IF函数来做。

5

先判断第一层,分数是否小于60,小于返回“不及格”、否则返回“及格”:=IF(A2<60,'不及格','及格')

6

但分数大于等于60时,是有多种情况的,所以再在此范围内进行判断,就形成了第二层函数,IF(A2<80,'及格','良')作为第一层的第三参数,当条件不成立,即分数不小于60时,返回IF(A2<80,'及格','良')的结果:=IF(A2<60,'不及格',IF(A2<80,'及格','良'))

7

同样的,当分数大于等于80时,还需要细分,用到第三层函数,IF(A2<90,'良','优')作为第二层IF函数的第三参数,当条件不成立,即分数不小于80时,返回IF(A2<90,'良','优')的结果:=IF(A2<60,'不及格',IF(A2<80,'及格',IF(A2<90,'良','优'))),利用三层嵌套函数完成公式,再向下填充。

8

再比如,现在的销售记录是记在一个单元格内,需要将每种水果的销售数量提取出来,这里以“香蕉”为例。

9

从表中可以看到,每天的销售中,各水果的销售量是不定的,销售的品种也是不定的,无法统一从某种字符开始提取,所以需要先判断当天销售中有没有“香蕉”这个品种,有的话再想办法提取,没有的话,直接返回空值或0,因此要先判断有没有“香蕉”,判断某个文本中有没有某个字符(串)常用FIND函数:=FIND(C$1,$B2),这里为了便于提取出其它水果的数量,公式中都采用了绝对引用符“$”加以限定,公式可以向右向下填充。

11

再来确定这个5究竟应该是什么数,由表中可以看到,提取的数量是在“:”和“,”之间的数字,所以要判断“,”的位置才能确定要提取几个字符,为了不影响原公式,可以在旁边辅助列中先判断,然后再将这部分公式复制到原公式中。直接用:=FIND(',',$B2),查找得到的结果是不对的,因为其中有多个“,”,返回的是第一个“,”出现的位置,因此需要从“香蕉”后面查找,就要用到FIND的嵌套:=FIND(',',$B2,FIND(C$1,$B2)+1)

12

知道了“香蕉”和“,”的位置就可以知道要返回几个字符:=FIND(',',$B2,FIND(C$1,$B2)+1)-FIND(C$1,$B2)-3,再从编辑栏中将此公式中“=”后的部分复制到原来公式中替换掉临时写的5:=MID(B2,FIND(C$1,$B2)+3,FIND(',',$B2,FIND(C$1,$B2)+1)-FIND(C$1,$B2)-3),就可提取出相应的数量,但提取出来的数量是文本格式,为了变成常规数值,可以在前面加上“--”,也就是乘上两次负号,负负得正,这是文本格式的数字转为数值最常用的方法:=--MID(B2,FIND(C$1,$B2)+3,FIND(',',$B2,FIND(C$1,$B2)+1)-FIND(C$1,$B2)-3)

13

有了公式的框架,再来完善公式,一种是找不到“香蕉”会出现错误值,一种是“香蕉”后没有“,”都会出错,对于后者,可以在公式中加上逗号:=--MID(B2,FIND(C$1,$B2)+3,FIND(',',$B2&',',FIND(C$1,$B2)+1)-FIND(C$1,$B2)-3)

14

对于前者,最外层再加个IFERROR函数,当出现错误值时,返回指定的值,比如空值:=IFERROR(--MID(B2,FIND(C$1,$B2)+3,FIND(',',$B2&',',FIND(C$1,$B2)+1)-FIND(C$1,$B2)-3),'')

15

从上面可以看到,要设计出合理的嵌套函数,首先要熟悉各个函数的用法,再一层一层的使用函数,不能一步到位时,可以先写出部分,不确定的参数可以先用某数据代替,然后再研究此参数的写法,最终得到完整的公式。

注意事项

查找标点符号等字符时,一定要注意与单元格的字符匹配,是全角半角,还是中文英文的。

推荐信息