分享

多条件计数,你用countifs还是sum?

 刘卓学EXCEL 2021-04-02
你好,我是刘卓。欢迎来到我的公号,excel函数解析。今天分享下多条件计数的两种方法,一种是用countifs,另一种是用sum。下面来看下题目。

下图是某公司部分员工的信息表,现在要统计出出生于20世纪八九十年代且已有职位的人数。简单来说就是出生于1980~1999年之间,且职位不为空的人数。结果是3,也就是绿色标出的那3个人。如何用函数算出结果?


1.sum多条件计数(一维数组间的运算)

先说下思路,首先从所有人的身份证号中提取出出生年份,然后判断这些年份是否在1980~1999这个范围内,这是第1个条件。同时还要判断职位是否不为空,这是第2个条件。把同时满足这2个条件的统计出来就可以了。

输入下面的公式,按ctrl+shift+enter。

=SUM((--MID(C3:C17,7,4)>=1980)*(--MID(C3:C17,7,4)<=1999)*(E3:E17<>""))


MID(C3:C17,7,4)这部分用mid从身份证号中将出生年份提取出来。从第7位开始提取,提取的长度是4位。

mid提取出来的年份是文本,--MID(C3:C17,7,4)这部分通过减负运算将文本转为数值。

然后让其大于等于1980且小于等于1999,满足年代的条件。因为年代这个条件在一个区间范围,所以相当于同时满足2个条件,2个条件之间相乘。

接下来还得让职位不等于空,也就是(E3:E17<>"")这部分。最后让这3部分相乘,同时满足的返回1,有一个不满足的返回0。用sum求和就得到了想要的结果。

这个题还可以用文本型数字的方式来比较,输入下面的公式,按三键。

=SUM((MID(C3:C17,7,3)>="198")*(MID(C3:C17,7,3)<="199")*(E3:E17<>""))

此时二十世纪八、九十年代分别用198和199来表示,也就是只要年份的前3位数。当然,从身份证号中也只提取年份的前3位数。然后像之前那样条件判断,相乘求和,结果是一样的。


2.countifs多条件计数(通配符的用法)

想要用countifs,条件区域必须是单元格引用,不能是数组。所以身份证号的区域是必须要用的,而它对应的条件又是年代,看起来不是很匹配。其实它们之间存在包含的关系,身份证号中包含年代。可以用通配符的方法来完成。输入下面的公式:

=SUM(COUNTIFS(C3:C17,"??????19"&{8,9}&"*",E3:E17,"<>"))

这个公式关键的部分就是countifs的第1个条件"??????19"&{8,9}&"*",它是个常量数组,而且用到了通配符*,返回的结果为{"??????198*","??????199*"},分别代表的是198几年和199几年。
"??????19"&{8,9}&"*"中,面的6个代表身份证号的前6位;19代表年份的前2位;{8,9}代表年份的第3位,8代表80年代,9代表90年代;最后的*代表身份证号的后9位。
由于上面的条件是个常量数组,包含2个值,所以countifs返回的结果也有2个值,分别是{2,1}。第1个值2是出生于二十世纪80年代且有职位的人数,第2个值1是出生于二十世纪90年代且有职位的人数。最后用sum求和得到了想要的结果。

3.sum多条件计数(方向不同的一维数组的运算)

二十世纪八、九十年代分别用198和199表示,输入下面的公式,按ctrl+shift+enter。

=SUM((MID(C3:C17,7,3)=19&{8,9})*(E3:E17<>""))


MID(C3:C17,7,3)这部分从身份证号中取出年份的前3位,得到了一个纵向一维数组。19&{8,9}返回的结果为{"198","199"},得到了一个横向的一维数组。

MID(C3:C17,7,3)=19&{8,9}这两部分进行相等的比较,返回的结果是一个二维数组。因为方向不同的一维数组的运算,结果会形成二维数组。

E3:E17<>""这部分判断职位不等于空,返回一个由逻辑值true和false组成的纵向一维数组。

(MID(C3:C17,7,3)=19&{8,9})*(E3:E17<>"")这两部分相乘是二维数组和一维数组的运算,得到的结果还是二维数组。最后用sum求和得到想要的结果。

下图是一个简单的运算示意图,①是MID(C3:C17,7,3)返回的结果;②是19&{8,9}返回的结果;③是①等于②返回的结果;④是E3:E17<>""返回的结果;⑤是③乘以④返回的结果。
链接:

https://pan.baidu.com/s/1rfohMOgsepp9wJj1PQX1PQ

提取码:fm8u

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多