当前位置:首页 > 技术文章 > 正文内容

COUNTIF函数用法大全(countif函数怎么用详细步骤)

COUNTIF函数用于统计满足某个条件的单元格的数量,其基本用法为:

COUNTIF(统计区域,指定的条件)

如下图所示,要统计A列有几个5,可以使用以下公式:

=COUNTIF(A2:A10,5)


咱们把COUNTIF函数的第二参数稍加改动,就可以衍生出很多高效用法,例如:

统计大于5的单元格个数:

=COUNTIF(A2:A10,">5")

统计大于B2单元格数值的单元格个数:

=COUNTIF(A2:A10,">"&B2)

统计不等于5的单元格个数:

=COUNTIF(A2:A10,"<>5")

统计空白单元格的个数:

=COUNTIF(A2:A10,"=")

统计非空单元格的个数:

=COUNTIF(A2:A10,"<>")

统计以"e"或“E”开头的单元格个数:

=COUNTIF(A2:A10,"e*")


对于身份证号码以及银行卡号等超长的文本型数字,使用COUNTIF函数时还需要加上一点“佐料”。

以下公式统计A列的身份证号码是否有重复:

=IF(COUNTIF(A:A,A2&"*")>1,"重复","")

COUNTIF函数在计算文本型数字时,会默认按数值型进行处理,但是Excel中的数字精度只有15位,并且身份证号码是18位,因此会把前15位相同的身份证全部识别为相同的内容。

在第二参数后加上一个星号 &"*",就是告诉Excel,要查找包含A2单元格内容的文本,通过这样变通的手段,COUTNIF函数就听话啦。


前面咱们说的是COUNTIF的第二参数,下面再说说第一参数:

如下图所示,要在A列按部门输入序号,不同部门的序号从1开始。

在A2单元格输入公式,向下复制:

=COUNTIF(B$2:B2,B2)

COUNTIF函数的统计区域是B$2:B2,第一个B2是行绝对引用,第二个B2,是相对引用。当公式向下复制时,就会变成B$2:B3、B$2:B4……一个不断扩展的区域,从这个动态区域中统计B列部门的个数。


下面咱们再分享COUNTIF函数的两个组合应用:

如下图所示,要计算C列不重复的人数。

公式为:

=SUMPRODUCT(1/COUNTIF(A2:A14,A2:A14))

这是一个十分常用的统计不重复数据个数的公式,其中包含了一个数学逻辑:

任意一个数据重复出现N次,N个1/N的和值为1

公式中“COUNTIF(A2:A14,A2:A14)”部分是数组计算,作用是分别统计A2:A14单元格区域中每个元素出现的次数。

运算过程相当于:

=COUNTIF(A2:A14,A2)

=COUNTIF(A2:A14,A3)

……

=COUNTIF(A2:A14,A14)

返回内存数组结果为:

{2;2;2;2;2;2;2;2;2;2;1;1;1}

再使用1除以返回的内存数组,得到以下结果:

{0.5;0.5;0.5……;1;1;1}

用1除,即相当于计算COUNTIF函数所返回内存数组的倒数。


为便于理解,把这一步的结果中的小数部分使用分数代替,结果为:

{1/2;1/2;1/2;1/2;……;1;1;1}

如果单元格的值在区域中是唯一值,这一步的结果是1。

如果重复出现两次,这一步的结果就有两个1/2。

如果单元格的值在区域中重复出现3次,结果就有3个1/3…

即每个元素对应的倒数合计起来结果仍是1。

最后用SUMPRODUCT函数求和,得出不重复的人员总数。


还没看晕?好,咱们继续。

如下图所示,要提取C列不重复的名单。

公式为:

=INDEX(C:C,1+MATCH(0,COUNTIF(E$1:E1,C$2:C$15),0))&""

注意是数组公式,编辑完成后,要按Ctrl+Shift+回车。

首先利用COUNTIF函数,在公式所在位置上方的单元格区域中,分别查找C$2:C$15单元格区域每个数据的个数。返回一个由0和1构成的数组,如果C$2:C$15单元格区域的元素在公式上方出现过,结果就是1;如果没出现,结果就是0。

和上一个例子里一样,COUNTIF函数的第一参数是一个扩展的区域,公式的提取结果会被重复利用。

再利用MATCH函数,在COUNTIF函数返回的数组中查找第一个0的位置,也就是查找首次出现的数据所在的位置。

由于数据表的标题行占了1行,将这个数字加1,就是需要提取的不重复数据在数据表中列的位置。

最后用INDEX函数,以MATCH函数的计算结果作为索引值提取C列对应位置上的数据。

这个函数从最后开始往上看,比较容易理解一些哦。


好了,今天咱们的内容就是这些吧,祝各位小伙伴一天好心情!


图文制作:祝洪忠

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/4440.html

分享给朋友:

“COUNTIF函数用法大全(countif函数怎么用详细步骤)” 的相关文章

隐藏Nginx服务的Banner 和 隐藏Nginx后端服务指定的header的状态

一、隐藏Nginx服务的Banner当Nginx服务器响应请求时,不隐藏它的版本信息和名称。这会暴露服务器的信息,使攻击者可以获取服务器软件版本和配置的信息,帮助攻击者发现潜在的漏洞或攻击路径。以下是一些潜在的危害:1. 暴露服务器信息:不隐藏 banner 可以让攻击者知道服务器正在使用 Ngin...

了解PHP-FPM

在服务器上,当我们查看php进程时,全都是php-fpm进程,大家都知道这个就是php的运行环境,那么,它到底是个什么东西呢?PHP-FPM简介PHP-FPM,就是PHP的FastCGI管理器,用于替换PHP FastCGI的大部分附加功能,在PHP5.3.3后已经成为了PHP的标配。有小伙伴要问了...

技巧:PHP版本怎样隐藏在Linux服务器

通常情况下,大多数安装web服务器软件的默认设置存在信息泄露,这些软件其中之一就是PHP。PHP是如今最流行的服务端html嵌入式语言之一。而在如今这个充满挑战的时代,有许多黑客会尝试发现你服务端的漏洞。因此,ehowstuff网站一篇简单描述如何在Linux服务器中隐藏PHP信息值得关注。(图片来...

为什么一条UPDATE语句有索引反而更慢

先来看看今天要讲的主人翁:UPDATE `i_msg_system` set `deliver`=1 where `uid`=10000 and `msg_group`=0 and `deliver`=0;涉事表结构:CREATE TABLE `i_msg_system` ( `id` int(...

Linux 网络延迟排查方法 linux延迟10秒

在 Linux 服务器中,可以通过内核调优、DPDK 以及 XDP 等多种方式提高服务器的抗攻击能力,降低 DDoS 对正常服务的影响。在应用程序中,可以使用各级缓存、WAF、CDN 等来缓解 DDoS 对应用程序的影响。但是需要注意的是,如果 DDoS 流量已经到达 Linux 服务器,那么即使应...

Java基础教程:k8s快速入门 k8s jmeter

介绍容器化部署随着Docker技术的流行,对项目的容器化部署方式越来越流行,容器化部署的优点如下:可以保证每个容器拥有自己的文件系统、CPU、内存、进程空间等运行应用程序所需要的资源都被容器包装,并和底层基础架构解耦容器化的应用程序可以跨云服务商、跨Linux操作系统发行版进行部署虽然容器化部署可以...