学函数公式的亲,据说65%以上都被它坑过

今天要和大家分享一组很少有人注意,但是却很重要的知识点,逗号“,”和星号“*” 。要想学好函数公式,这个必须要理解才可以哦 。
在函数公式中 , 逗号的作用是对不同参数进行间隔 。但是在实际应用中,一些新人朋友往往会被这个小逗逗搞得晕头转向 。
首先来看看咱们熟知的IF函数,如果A1输入1,目测一下下面两个公式 , 会返回什么结果呢?
=IF(A1>5,"大")
=IF(A1>5,"大",)
怎么样,猜对了吗?
前者返回的是逻辑值FALSE,后者返回的是数值0 。
两个公式唯一的差别是一个逗号,第一个公式缺省参数,是指参数的位置给剥夺了 。
第二个公式是省略参数值,就是位置留着,不过没有明确指出参数值是多少 。
接下来再看一个排名函数RANK 。

学函数公式的亲,据说65%以上都被它坑过

文章插图
文章插图
C2单元格的公式是:=RANK(B2,B$2:B$6)
RANK函数的第三参数如果为0或是省略,排位结果是按照降序排列的 。
如果第三参数不为零,则排位结果是按照升序排列的 。
学函数公式的亲,据说65%以上都被它坑过

文章插图
文章插图
一个逗号的差异,苍老师从排名第一直接变成排名第5了 。
MATCH函数参数中的最后一个逗号也是有讲究的 。如下图所示,需要查询芳菲在A列所处的位置 。
学函数公式的亲,据说65%以上都被它坑过

文章插图
文章插图
图中分别使用两个公式 , 结果却不相同 。
=MATCH(D2,A:A)
=MATCH(D2,A:A,)
从图中可以看出,前者返回的是一个错误结果 。
当MATCH函数第三参数为0或是省略参数值时,将按精确匹配的方式返回结果 。
如果逗号也省略了,就是查找小于或等于查询值的最大值,但是要求查询参数中的值必须按升序排列 。
受逗号影响的,还有VLOOKUP函数,看下图:
学函数公式的亲,据说65%以上都被它坑过

文章插图
文章插图
图中分别使用了两个公式,这里的逗号也会影响查询的精度 。
=VLOOKUP(D2,A:B,2)
=VLOOKUP(D2,A:B,2,)
当VLOOKUP函数第四参数为0或是省略参数值时,将按精确匹配的方式返回查询结果 。
如果逗号也省略了,就是在查询区域中查询小于或等于查询值的最大值 , 并返回指定列的内容,同样要求查询参数中的值必须按升序排列 。
通过以上几个例子可以看出,小小的逗号对公式结果的影响是不容忽视的 , 你还可以举出几个类似的例子吗?
在Excel中, 还有一个身份独特的符号,就是小星号(*) , 千万不要小看他,就是这个小小的精灵,总让新手们觉得难以捉摸 。
说它身份独特,是因为星号(*)除了表示运算符乘号,还具有通配符的身份,用来表示任意多个字符 。
与之对应的还有半角的问号“?”,问号也是通配符的一种 , 表示的是单个字符 。
既然身份特殊,就要有特殊的处理规则 。
如下图所示,需要将单元格中的星号(*)批量替换为“待评估” 。
学函数公式的亲,据说65%以上都被它坑过

文章插图
文章插图
如果按常规方法,所有数据都将被替换为“待评估” 。
学函数公式的亲,据说65%以上都被它坑过

文章插图
文章插图
正确方法是:
学函数公式的亲,据说65%以上都被它坑过

文章插图
文章插图
在星号(*)之前加上波形符(~),起到转义的作用 , 就是告诉Excel:我要查找的是文本字符*,不要按通配符进行处理哦 。
在某些公式中,星号(*)则表示通配符 。
如公式:=SUMIF(A:A,"HK*",B:B)
就是表示如果A列中以字符“HK”开头 , 则计算所对应的B列之和 。
常用的支持通配符的函数包括:SUMIF、SUMIFS、COUNTIF、COUNTIFS、AVERAGEIF、AVERAGEIFS等等 。
除了使用星号(*)作为通配符按模糊条件进行汇总之外,星号(*)还有另一个特殊的用途:如下图所示,需要标注身份证号码是否重复 。
如果直接使用下面的公式判断 , 将无法得到正确结果 。
=IF(COUNTIF(B:B,B2)>1,"重复","")
学函数公式的亲,据说65%以上都被它坑过

文章插图
文章插图
图中,女神和金莲的身份证号码完全一致,公式貌似没有问题,但是再看金花的身份证号码,问题就来了,后三位不同的身份证号码也被识别为相同了 。
这是因为COUNTIF函数在处理文本型数字时,会自动按数值进行处理,而Excel的最大精度只有15位,超过15位部分全部按0进行处理,所以对于18位的身份证号码出现了错误判断 。
可以在公式中加上一个星号(*) , 以实现正确判断 。
=IF(COUNTIF(B:B,B2&"*")>1,"重复","")
学函数公式的亲,据说65%以上都被它坑过

文章插图
文章插图
加上星号(*)的目的是使其强制识别为文本,相当于告诉COUNTIF , 我找的是以B2单元格内容开头的文本 , 这样就可以区分女神和金花了 。
如果需要精确查找含有星号(*)的内容,也需要进行特殊的处理 。
如下图所示 , 需要根据D2单元格中的指定产品型号查询对应的供货商,E2单元格公式为:
=INDEX(B:B,MATCH(D2,A:A,))
学函数公式的亲,据说65%以上都被它坑过

文章插图
文章插图
结果明显不对了 , 明明是如花,返回怎么是女神呢 。
由于D2单元格中包含星号(*) , MATCH函数查找时就会默认将星号按通配符处理,在B列中返回前两个字符是“6S”、最后一个字符是“A”的位置 。如果有多个符合条件的结果 , MATCH函数只能返回第一个的位置,所以女神如花傻傻分不清了 。
使用以下公式可以返回正确的结果:=LOOKUP(1,0/(A2:A8=D2),B2:B8)
学函数公式的亲,据说65%以上都被它坑过

文章插图
文章插图
利用等式中不能使用通配符的特点 , 用A2:A8=D2,以完全匹配的方式返回逻辑值TRUE或是FALSE 。
再用0除以逻辑值,得到0或是错误值#DIV/0!组成的内存数组 。最后使用1作为查找值,以内存数组中最后一个0进行匹配,并返回B2:B8单元格对应位置的内容 。
最后留给大家一个小尾巴:如果在单元格中输入下面的内容,想想结果会是什么呢?
=4**5
学函数公式的亲,据说65%以上都被它坑过

文章插图
文章插图
打开Excel验证一下,你猜对了吗,为什么会是这样呢?
【学函数公式的亲,据说65%以上都被它坑过】