COUNTIF,堪比统计函数中的VLOOKUP,你会用吗?
个人微信号 | (ID:LiRuiExcel520)
微信服务号 | 跟李锐学Excel(ID:LiRuiExcel)
微信公众号 | Excel函数与公式(ID:ExcelLiRui)
本文关键词:countif
在职场办公中,经常需要对数据进行条件计数统计,COUNTIF函数是工作中使用频率超高的条件计数统计函数之一,堪称统计函数中的VLOOKUP!
函数语法解析及基础用法
COUNTIF函数用于统计满足某个条件的单元格的数量,该函数拥有十分强大的条件统计功能,在工作中有极其广泛的应用,其基本语法为:
COUNTIF(range,criteria)
range:必需。要进行计数的单元格组。区域可以包括数字、数组、命名区域或包含数字的引用。空白和文本值将被忽略。
criteria:必需。用于决定要统计哪些单元格的数量的数字、表达式、单元格引用或文本字符串。
说明:
(1)criteria中的任何文本条件或任何含有逻辑或数学符号的条件都必须使用双引号括起来。如果条件为数字,则无需使用双引号。
(2)criteria参数中支持使用通配符(包括问号“?”和星号“*”)。问号匹配任意单个字符;星号匹配任意一串字符。如果要查找实际的问号或星号,请在该字符前键入波形符“~”。
(3)使用COUNTIF 函数匹配超过 255 个字符的字符串时,将返回不正确的结果。
COUNTIF函数仅支持criteria使用一个条件。 如果要使用多个条件,请使用COUNTIFS函数。
下面来看个例子,更好地理解COUNTIF函数的上述语法及参数。
案例场景如下(黄色区域输入公式)
要统计A列出现几次"苹果",公式为:
=COUNTIF(A2:A12,"苹果")
要统计B列出现几次55,公式为:
=COUNTIF(B2:B12,55)
可见如果条件为文本,需要使用双引号引起来;如果条件为数字,则无需使用双引号。
统计等于某值的数据个数
COUNTIF函数的条件计数功能在实际工作中应用非常广泛,比如统计产品在清单中出现的次数,检查工资表中的姓名是否有重复,根据指标计算产品合格率等,先选择最基础的一个案例来介绍。
案例场景如下(黄色区域输入公式)
E2输入公式:
=COUNTIF($A$2:$A$12,D2)
COUNTIF函数的第一参数绝对引用,是为了公式向下填充时,保持引用范围不变;
COUNTIF函数的第二参数直接使用相对引用待统计单元格,公式向下填充时,D2依次变为D3、D4……
按部门统计序号
灵活运用COUNTIF函数的统计计数功能,有时能达到意想不到的效果。比如下面这个案例:
案例场景如下(黄色区域输入公式)
表格中的A:B列是数据源区域,我们需要统计A列的员工的部门序号,即部门中第一次出现为该部门1号,如果已有该部门员工出现过,就顺次往下排号,如黄色区域所示。
给出公式,C2输入以下公式:
=B2&COUNTIF(B$2:B2,B2)
本教程内容担心记不全的话,可以分享到朋友圈给自己备份一份。
看完教程还想进一步系统学习的同学,长按下图,识别二维码参加Excel特训营。
长按识别二维码↓获取
函数基础语法解析
SUMIF函数可以对范围中符合指定条件的值求和,该函数拥有十分强大的条件求和功能,在工作中有极其广泛的应用,其基本语法为:
SUMIF(range,criteria,[sum_range])
range:必需。用于条件计算的单元格区域。每个区域中的单元格都必须是数字或名称、数组或包含数字的引用。空值和文本值将被忽略。
criteria:必需。用于确定对哪些单元格求和的条件,其形式可以为数字、表达式、单元格引用、文本或函数。
sum_range:可选。要求和的实际单元格(如果要对未在range参数中指定的单元格求和)。如果省略sum_range参数,Excel会对在range参数中指定的单元格(即应用条件的单元格)求和。
说明:
(1)criteria中的任何文本条件或任何含有逻辑或数学符号的条件都必须使用双引号括起来。如果条件为数字,则无需使用双引号。
(2)criteria参数中支持使用通配符(包括问号“?”和星号“*”)。问号匹配任意单个字符;星号匹配任意一串字符。如果要查找实际的问号或星号,请在该字符前键入波形符“~”。
(3)使用SUMIF函数匹配超过255个字符的字符串或字符串#VALUE!时,将返回不正确的结果。
(4)当sum_range参数与range参数的大小和形状可以不同。求和的实际单元格通过以下方法确定:使用sum_range参数中左上角的单元格作为起始单元格,然后包括与range参数大小和形状相对应的单元格。注意,这种情况下会使SUMIF函数具有易失性,即引发工作表重算。
SUMIF函数本身不是易失性函数,但当SUMIF函数中的range和sum_range参数包含的单元格个数不相等时,会具备易失性。如以下公式:
=SUMIF(B2:B9,"女",C2:C3)
=SUMIF(B2:B9,"女",C2:C99)
=SUMIF(B2:B9,"女",C2)
三个公式返回的结果一致,SUMIF函数的sum_range参数的单元格个数都与range的单元格个数不同,但都会将sum_range的区域按照C2:C9计算,即以C2为起始单元格,延伸至大小和形状与B2:B9相同的单元格。相当于以下公式:
=SUMIF(B2:B9,"女",C2:C9)
易失性会引发工作表的重新计算,计算时间会比预期的要长,工作中应尽量避免这种情况出现。
(5)SUMIF函数中criteria参数的格式会限定其选择条件求和的范围。即如果第二参数是数值,SUMIF函数就只对第一参数是数值格式的单元格对应的求和区域中进行统计,而忽略其他格式如文本、逻辑值、错误值等。利用SUMIF函数的这个特性,我们可以排除错误值进行求和。
单字段单条件求和
工作中最常见的需求当然就是单条件求和啦,SUMIF函数在这方面可谓得心应手!
下面就来讲讲SUMIF函数统计单字段单条件求和条件求和,还讲解了当SUMIF的第三参数缺省时的运算方式和原理。
SUMIF函数的单条件求和应用非常广泛,在很多情况下,当条件区域和求和区域重合时还可以简化公式写法,下面结合一个案例来介绍具体的方法。
要求从数据源中统计90分以上的成绩之和,先给出公式
=SUMIF(B2:B12,">90")
单字段多条件求和
上一节教程中我们学会了SUMIF函数的单条件求和,那么当工作中出现对某个字段并列多条件求和的需求,又如何应对呢?
我们结合下面这个案例来具体介绍。
表格中左侧是数据源区域,要求统计北京分公司、上海分公司、广州分公司这三家销售额总和,如果是只求一家分公司(如北京)的销售额那很简单,公式为
=SUMIF(A2:A12,"北京",B2:B12)
多家怎么办呢?最直接的办法当然是这样:
=SUMIF(A2:A12,"北京",B2:B12)+ SUMIF(A2:A12,"上海",B2:B12)+ SUMIF(A2:A12,"广州",B2:B12)
是不是只有这种方法呢?如果需要统计的分公司增加,岂不是公式越来越长?
当然会有更好的办法啦!
给出这里使用的公式:
=SUM(SUMIF(A2:A12,{"北京","上海","广州"},B2:B12))
统计前三名成绩和
前面的课程中我们学会了SUMIF函数的单条件求和、多条件求和,那么当我们在工作中遇到涉及数值大小的问题,该用什么思路去解决呢?
下面这个案例,我们就用SUMIF函数结合LARGE函数配合搞定一个极值统计问题。
表格中左侧是数据源区域,要求统计前三名成绩之和。
我们可以分为两步来思考这个问题,第一步是需要从数据中用公式提取前三名的成绩,第二部是将它们汇总求和。这样即可数据源变动,前三名成绩也会随公式结果动态更新,从而始终保证结果的正确。
这里给出公式
=SUMIF(B2:B12,">"&LARGE(B2:B12,4))
模糊条件求和
有时我们要按照模糊条件求和,而SUMIF函数支持通配符的使用,下面我们结合案例来介绍模糊条件求和的方法。
表格左侧是数据源区域,要求统计姓“张”的员工成绩之和,也就是姓名中以“张”开头的,给出公式。
=SUMIF(A2:A12,"张*",B2:B12)
统计大于(小于)某值的数据个数
工作中进行条件计数统计的时候,免不了遇到大小比较的情形,比如统计工龄高于某年的员工人数,合格率低于某值的工件个数,成绩高于某值的学生人数等,下面结合一个案例来具体介绍。
案例场景如下(黄色区域输入公式)
要统计大于90的人数,公式如下:
=COUNTIF(B2:B12,">90")
要统计小于60的人数,公式如下:
=COUNTIF(B2:B12,"<60")
注意公式的写法,使用的是算术运算符连接数值作为COUNTIF函数的第二参数,需要用双引号引起来。
统计某个数值区间的数据个数
上一节教程中我们学会了涉及大小比较的条件计数统计方法,那么如果遇到需要同时满足既要大于某值又要小于某值的情形,怎么办呢?
案例场景如下(黄色区域输入公式)
这个表格中左侧是数据源区域,要求统计大于等于80且小于90的人数。
如果我们用上一节教程中的办法肯定也是可以实现的,比如这个公式:
=COUNTIF(B2:B12,">=80")-COUNTIF(B2:B12,">=90")
聪明的小伙伴们一定已经看懂啦,要统计的大于等于80且小于90的人数,不就是用大于等于80的人数减去大于等于90的人数么,分分钟搞定。
不过这么看起来公式好长,能简化一点吗?
当然可以啦!简化公式如下:
=SUM(COUNTIF(B$2:B$12,{">=80",">=90"})*{1,-1})
单字段模糊条件统计
我们在工作中遇到的统计需求,有时候可以明确完整的统计条件,有时候是要根据一部分确定的条件来进行统计,比如我们要统计开头是某值的数据个数,或者统计结尾是某值的数据个数,或者统计数据中间包含某值的数据个数时,具体举例如统计姓“李”的姓名个数时。
在条件计数遇到模糊条件时,需要配合通配符来完成,来看下面案例。
案例场景如下(黄色区域输入公式)
给出公式。要统计姓“李"且姓名为三个字的人数,输入以下公式:
=COUNTIF(A$2:A$12,"李??")
要统计姓“王"的人数,输入以下公式:
=COUNTIF(A$2:A$12,"王*")
单字段并列条件统计个数
通过前面的教程,我们掌握了COUNTIF函数条件统计的方法,比如统计符合某条件的数据个数,那么当遇到需要统计符合条件1或条件2的个数时,如何求解呢?
案例场景如下(黄色区域输入公式)
表格中左侧是数据源区域,包含员工姓名和对应的分公司信息,现在要统计分公司是北京或上海的人数之和。
干货教程较长,一时看不完可以先分享到朋友圈,以备后查。
E2输入以下公式:
=SUM(COUNTIF(A$2:A$12,{"北京","上海"}))
统计文本数据个数
结合下面案例介绍COUNTIF函数统计文本数据个数的方法
案例场景如下(黄色区域输入公式)
给出公式,D2输入以下公式:
=COUNTIF(A2:A8,"*")
统计非空数据个数
结合下面案例介绍COUNTIF函数统计非空数据个数的方法
案例场景如下(黄色区域输入公式)
给出公式,D2输入以下公式:
=COUNTIF(A2:A8,"<>")
统计真空数据个数
结合下面案例介绍COUNTIF函数统计真空数据个数的方法
案例场景如下(黄色区域输入公式)
给出公式,D2输入以下公式:
=COUNTIF(A2:A8,"=")
统计不重复值个数
不重复值的统计是工作中很常见的需求,灵活运用COUNTIF函数可以很轻松的搞定。
案例场景如下(黄色区域输入公式)
表格中左侧是数据源区域,需要统计不重复的员工籍贯个数。
给出数组公式,在D2输入以下数组公式,按<Ctrl+Shift+Enter>结束输入。
=SUM(1/COUNTIF(B2:B12,B2:B12))
检查重复身份证号码
很多小伙伴可能都遇到过这样的困扰,当工作中遇到长文本数据的个数统计时,使用COUNTIF函数的常规用法总是出错,比如涉及身份证号码,银行账号等超过15位长度的文本时。这时我们需要采用什么方法呢?看下面案例。
表格展示的是某企业员工信息表,需要核对B列的身份证号码中是否存在重复。
案例场景如下(黄色区域输入公式)
C2单元格输入以下公式,将公式向下复制到C11单元格。
=IF(COUNTIF(B$2:B$11,B2&"*")>1,"是","")
统计中国式排名
中国式排名,即无论有几个并列名次,后续的排名紧跟前面的名次顺延生成,并列排名不占用名次。
举个例子:比如对97、97、96统计的中国式排名结果为第一名、第一名、第二名。
下面案例中的表格展示的是某班级的成绩表,需要统计每名学生的成绩的中国式排名。
案例场景如下(黄色区域输入公式)
在C2单元格输入以下数组公式,按<Ctrl+Shift+Enter>组合键,并将公式向下复制填充到C11单元格。
=SUM(IF(B$2:B$11>=B2,1/COUNTIF(B$2:B$11,B$2:B$11)))
提取不重复数据列表
工作中很多地方要用到提取不重复值列表,即重复的数据只出现一次,比如在月末汇总统计加班明细记录时,提取加班人员的不重复列表;搞促销活动期间统计不重复的值班人员列表等。
单纯靠COUNTIF函数本身是无法完成此类需求的,但我们只要学会COUNTIF函数结合INDEX函数及MATCH函数的方法,就可以轻松提取出一列数据中的不重复内容
下面结合一个案例来具体介绍。
下图表格中展示了某企业在大促期间安排的值班人员记录表的部分内容,需要根据B列的值班人员,提取出不重复的值班人员清单。
案例场景如下(黄色区域输入公式)
在D2单元格输入以下数组公式,按<Ctrl+Shift+Enter>组合键,向下复制公式至出现空白单元格。
=IFERROR(INDEX(B:B,MATCH(0,COUNTIF(D$1:D1,$B$2:$B$11),0)+1)&"","")
希望这篇文章能帮到你!