COUNTIF也是一个自带BUG的男人,本章就来给大家聊一下这BUG是怎么回事。
工具/原料
1
电脑
2
EXCEL
方法/步骤
1
就是下图这题儿,需要查询C列的身份证号在A列是否存在
2
小C给出的函数公式是: =IF(COUNTIF(A:A,C2),'存在','不存在')
3
COUNTIF函数计算C2的值在A列出现的次数,如果次数大于0,则条件为真,IF函数返回'存在',否则返回'不存在'。结果计算错了,这题如此简单……怎么可能算错?! ……除非……COUNTIF出BUG了~!
4
原来COUNTIF在计算的过程中,会自动将文本数值转换为数值。而众所周知的是,当数值超过15位,如果不作文本保存,就会丧失准确度;超过15位的部分,统统会变成了0。比如3704092,会变成3704090。所以出现上面的BUG。
5
有人采用了=COUNTIF(A:A,C2&'*'),C2&'*',星号是通配符,代表0到多个字符,和数值搭配后,会将数值强迫转换为文本值,这样就可以强制COUNTIF按文本类型对数值进行匹配计数了,也就避免了【BUG】的产生。
6
结果,又错了。
7
=COUNTIF(A:A,C2&'*')……要求数值的长度得一致,比如都得18位
8
手说,计数就用SUMPRODUCT吧,用等号去判断两个值是否相等。 =SUMPRODUCT((A$2:A$22=C2)*1)
注意事项
每个函数都有使用范围,使用限制