乐于分享
好东西不私藏

Excel中统计指定年份出生人数

Excel中统计指定年份出生人数

本例的任务是根据生日统计各年份对应的人数,待统计的年份已预先填写在 E 列。

SUM+数组

最简单快捷的方法是用YEAR函数、SUM函数搭配数组运算:

=SUM(--(YEAR($C$3:$C$14)=E3))

从公式内部开始分析,YEAR 函数从每个日期中获取年份值:

{1993;1995;1995;1992;1993;1995;1996;1993;1996;1992}

年份与E3单元格做对比,相同的返回TRUE,不同的返回FALSE,于是得到一个逻辑值数组:

{FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE}

双减号(--)将TRUE转换为1FALSE转换为0,再用SUM求和:

=SUM({0;0;0;1;0;0;0;0;0;1})

数组中的1即表示对应的年份与E3中的年份相等,求和结果即相等的年份数量,公式向下填充时,会统计每个年份对应的生日数量,结果如图所示。

COUNTIFS搭配DATE

COUNTIFS 也能完成任务,但实现方式相对复杂。因为 COUNTIFS 只能对实际单元格区域进行条件判断,无法在函数内部直接提取日期中的年份并作为统计范围使用。为了解决这一问题,需要先为每个目标年份创建对应的起始日期和结束日期,再利用 COUNTIFS 按日期区间进行计数。其公式如下:

=COUNTIFS(C:C,">="&DATE(E3,1,1),C:C,"<"&DATE(E3+1,1,1))

第一个DATE返回E3中年份的11日,第二个DATE返回E3中年份下一年的11日:

DATE(E3,1,1)      //   1992/1/1DATE(E3+1,1,1)   //    1993/1/1

COUNTIFS统计的是大于等于1992/1/1且小于1993/1/1的日期数量。

DATE的参数设置为数组,整个公式变成数组公式,以数组形式返回所有结果,可以省去下拉填充公式的步骤:

=COUNTIFS(C:C,">="&DATE(E3:E7,1,1),C:C,"<"&DATE(E3:E7+1,1,1))

GROUPBY搭配YEAR

GROUPBYExcel365版本推出的新函数,可以轻松实现各种数据的统计。本案例的实质是要统计各个年份的数量,于是用YEAR提取出所有年份,将其作为GROUPBY的第一和第二参数,第三参数设置为COUNTA统计各自的出现次数:

=GROUPBY(YEAR(C3:C12),YEAR(C3:C12),COUNTA,0,0)

由于年份是数字,第三参数也可以调用COUNT来做统计:

=GROUPBY(YEAR(C3:C12),YEAR(C3:C12),COUNT,0,0)

COUNTA用于统计非空单元格的个数;而COUNT用于统计数字单元格的个数。

当然,细心的你肯定已经发现GROUPBY不适用于提前把年份录入到单元格的情形,1994年的数量是0,在GROUPBY返回的结果中并不会出现。