分享

此公众号可以留言了!countif函数的注意事项!

 刘卓学EXCEL 2021-04-02

好久没更新文章了,一个是没动力,关注的人不多;一个是没有留言功能,都不知道你们的反馈,感觉一个人在自说自话。不过幸运的是今天此公众号有留言功能了,大家可以点文章末尾的链接来写留言了。

接下来,继续咱们的函数正题。countif函数的注意事项——主要是数据类型的问题。

-01-

条件中有比较运算符

1.求大于60分的个数。

在A列中是一些分数,求大于60分的有几个?在C3单元格中输入公式=COUNTIF(A2:A8,">60"),结果为3。但在A列中可以看到大于60的有4个数字,用红色箭头标出。那为什么结果是3呢?

原因是最后两个数字戴了“绿帽子”,也就是单元格的左上角有绿色三角标签。这两个“数字”其实是文本。也就是在A2:A8这个区域,既有数字又有文本。此时countif是区分数据类型的,由于条件是>60,所以只在这个区域的数字类型中找大于60的有几个,而不在文本中找。所以最后结果是3。

由此可以总结,当countif第2参数是比较运算符>,>=,<,<=连接数字的时候,比如">60",它会区分数据类型,只在条件区域的数字中统计符合条件的单元格个数。

-02-

条件中有数字或文本型数字

1.求等于60分的个数。

这次求等于60分的有几个,在C1单元格输入公式=COUNTIF(A2:A8,60),结果为3。在A2:A8这个区域中也有3个60,虽然2个是数字的60,1个是文本的60,但这次却不区分数据类型,可以看做统一转成数字。

在C2单元格中输入公式=COUNTIF(A2:A8,"60"),结果还是3。第2参数的60是文本型的60,说明此时还是不区分数据类型的。

可以总结,当countif第2参数是数字或者文本型数字时,条件区域和条件是不区分数据类型的,可以看做统一转为数字。

-03-

条件中有通配符*或?

1.统计身份证号的个数。

A列有3个身份证号,只有最后一位数字不同。现在要统计每个身份证号出现的次数,在C12单元格中输入公式=COUNTIF(A$12:A$14,A12),向下填充结果都是3。就会很奇怪,明明每个号码都只有1个,为什么会是3呢?

在公式中选中countif第2参数,按F9可以看到是个文本型数字,但countif会将其转为数字,就变成一个18位的数字,由于excel的精度只有15位,15位之后的数字会变为0,最后实际它变成140242198803052000。A12:A14的文本型数字也会变成数字140242198803052000。所以最后结果为3。


那么该怎么解决这个问题呢?就要用到通配符*。在D12单元格中输入公式=COUNTIF(A$12:A$14,A12&"*"),向下填充,结果为1。通配符*代表的是文本,A12&"*"就将其数据类型强制转为文本。这样就不会转为数字了。

可以总结出,如果countif第2参数中有通配符,那么它就是文本类型,只会在第一参数的文本中统计符合条件的单元格个数。

-04-

条件中有空单元格

1.统计不重复姓名的个数。

A列是一些姓名,其中有重复的,现在求不重复姓名的个数,下图中箭头已经标出,一共有4个。在C18单元格中输入数组公式=SUM(1/COUNTIF(A18:A24,A18:A24)),按ctrl+shift+enter三键结束,结果为错误值。为什么?

因为在A18:A24这个区域中有个空单元格,如果对这个数组公式不理解,可以分步说明。选中B18:B24单元格输入公式=COUNTIF(A18:A24,A18:A24),三键结束,可以看到每个名字出现的次数。但是空单元格对应的数字却是0。用1除就会出现错误值。


那空单元格对应的0是怎么产生的?从=COUNTIF(A18:A24,A18:A24)这个公式中可以看到,第1参数和第2参数一样。实际第2参数中的A21单元格转为0,第1参数中的A21单元格转为空文本""。

那么这个问题就可以解决了,在C19单元格中输入公式=SUM(1/COUNTIF(A18:A24,A18:A24&""))-1,三键结束。A18:A24&""将空单元格变成空文本"",这样避免了0的出现。但是SUM(1/COUNTIF(A18:A24,A18:A24&""))把空单元格也算进去了,所以要减去1。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多