课程咨询 加我微信EXCEL880B 试学网址http://v.excel880.com
COUNTIF 俗称条件计数,来计算符合条件的单元格个数,接受参数为(单元格区域,条件) 基本用法可参考帮助
这里主要讲几点容易忽略的几个小细节 在使用时可能会与预期的结果不符
另外 注意数据标准化的话 不会出现这些问题 但是现实中总是有很多非标准数据 请小心使用
1.通配符 "*","?"
*表示0-N个文本字符,?表示一个文本字符
在COUNTIF中如果使用了通配符,那么只会查找所有的文本,其他类型的数据将会被忽略
1.1 COUNTIF(A4:A15,"*")=6符合条件单元格为A5,A6,A7,A10,A12,A13
当使用"*"作为条件时 返回的内容为所有文本单元格的个数,其中包含空文本 如单元格的值为=""
1.2 COUNTIF(A4:A15,"?*")=4符合条件单元格为A7,A10,A12,A13
"*"代表了所有的文本包含(""),如果想求出不含空文本的所有文本单元格个数时,使用"?*",是一个不错的选择
根据通配符来解决 就是长度>=1的文本,因为?代表一个字符,因此len("")=0 将不会被统计
2.比较运算
在比较运算中,如果是">1"那么只会比较数值
2.1 等于运算和其他比较运算的一些不同
上面提到如>1 那么只计算数值,如单元格的时候为="88",文本型数值将不会被计算,但=是有些许不同的
COUNTIF(A4:A15,"=88") =2符合条件单元格为A9,A10
那么不管单元格的值是=88或者是="88" 都会被计算 文本型数值将会转化为数值
2.2 不等于运算
COUNTIF(A4:A15,"<>88")=11符合条件单元格为A4,A5,A6,A7,A8,A10,A11,A12,A13,A14,A15
这时判断的是所有不等于数值88的数据,或者真空单元格,文本,文本数值,逻辑值都会被统计
<>比较数值时要慎用 确保没有文本型数值,实在没办法去除用 COUNTA(B3:B12)-COUNTIF(A4:A15,"=88")
2.3 真空问题
所谓真空 就是单元格什么都没有,没有空格也没有',更没有"" 也就是Countblank计算的单元格了
当然用COUNTIF也是可以求出来的 公式如下
COUNTIF(A4:A15,"=")=11符合条件单元格为A4
于是不为真空的条件就是COUNTIF(A4:A15,"<>")
COUNTIF(A4:A15,"<>")=11符合条件单元格为A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15
3.文本与逻辑值
3.1 COUNTIF(A4:A15,"")=3符合条件单元格为A4,A5,A6
这个会统计真空与空文本的值,这里要注意如果条件""是引用的单元格 那么单元格要写=""
3.2 COUNTIF(A4:A15,TRUE)=1符合条件单元格为A11
这个可以统计逻辑值TRUE,如果单元格的值为="TRUE"是不会被统计的
而如果是COUNTIF(A4:A15,"TRUE")一样是只统计逻辑值的,="True"将不被计数
或者COUNTIF(A4:A15,"=true"),一样也是只计算逻辑值的True的个数
在这一点上我一直很纠结,一直无法用一条COUNTIF精准的去统计文本型的true,false
COUNTIF(A4:A15,"true*")=1符合条件单元格为A12
一般我都采取COUNTIF(A4:A15,"true*")来解决,不过如果缺点是显而意见的.
如果有人解决了这个问题,请一定告诉我
3.3 COUNTIF文本比较
就像在单元格中输入="A"="a"的结果是True一样,COUNTIF是不区分大小写,想区分大小写只能换一个函数使用了
COUNTIF(A4:A15,"A*")=2符合条件单元格为A7,A13
4.错误值
在很多的函数中如Sum,Mid,Int,Abs中,如果单元格中存在错误值,那么返回的结果就是错误值了,但CountIf并不会如此呢
相反他还可以分类每一种错误值的个数
COUNTIF(A4:A15,1/0)1符合条件单元格为A14
那么他只会统计A列中除0错误的值,也可以写成如下
COUNTIF(A4:A15,"#value!")
就会计算#VALUE!这个错误值的个数了,注意单元格的值如为="#VALUE!",将不会被计算,这一点和上面的逻辑值相似
**ps:以上的判断条件在sumif中是通用的,是完全一样的.