SUBTOTAL函数主要用于筛选和隐藏后的数据统计,其语法为

SUBTOTAL(function_num,ref1,…),其中参数function_num用于指定要为分类汇总使用的函数,如求和、计数、求平均值等。

function_num参数值的具体含义如下表所示:

当function_num取1~11时,SUBTOTAL函数对筛选后的数据进行统计,包括手工隐藏的数据。当function_num取101~111时,SUBTOTAL函数对可见的数据进行统计,忽略筛选掉的数据和手工隐藏的数据。无论function_num取1~11还是101~111,SUBTOTAL函数均不统计筛选掉的数据,两个参数范围的区别在于是否统计手工隐藏的数据。

本文主要以使用SUBTOTAL函数进行计数(即function_num为3、103)和求和(即function_num为9、109)为例,讲解SUBTOTAL函数的用法。

一、筛选后计数

如下图所示,A1:C11为各业务员销售额。要求计算筛选出的人数。

在F1单元格输入公式:=SUBTOTAL(3,$A$2:$A$11)

如下图所示,当未筛选数据时,SUBTOTAL函数返回值为“10”。

当筛选出“销售1部”的数据时,SUBTOTAL函数返回值为“4”。

二、筛选后求和

如下图所示,在F1单元格输入公式:=SUBTOTAL(9,$C$2:$C$11)

当未筛选数据时,SUBTOTAL函数返回值为“550”。

当筛选出“销售1部”数据时,SUBTOTAL函数返回值为“220”。

三、隐藏后计数

如下图所示,在F1单元格输入公式:=SUBTOTAL(103,$A$2:$A$11)

此时所有数据均未隐藏,SUBTOTAL函数返回值为“10”。

当隐藏第2、3行数据后,SUBTOTAL函数返回值为“8”,如下图所示。

四、隐藏后求和

如下图所示,在F1单元格输入公式:=SUBTOTAL(109,$C$2:$C$11)

此时所有数据均未隐藏,SUBTOTAL函数返回值为“550”。

当隐藏第2、3行数据后,SUBTOTAL函数返回值为“520”。

五、生成筛选后仍连续的序号

如下图所示,在A2单元格输入公式:=SUBTOTAL(103,$B$2:B2)*1

拖动填充柄向下复制公式,在A2:A11生成连续序号。

当筛选出“销售1部”时,序号仍保持连续,如下图所示:

六、对筛选后的数据进行条件计数

如下图所示,在C14单元格输入公式:

=SUMPRODUCT(($B$2:$B$11=B15)*(SUBTOTAL(2,OFFSET($C$2,ROW($C$2:$C$11)-2,0))))

拖动填充柄将公式向下复制至C16单元格。

当未筛选数据时,SUBTOTAL函数返回的是各部门的员工人数。

当筛选出“销售额>=50”的数据时,SUBTOTAL函数返回的是各部门销售额不低于50的员工人数,如下图所示:

本例中,使用OFFSET函数作为SUBTOTAL函数ref1参数,确定C2:C11单元格是否被筛选出。使用公式($B$2:$B$11=B15)判断是否为B15单元格的部门(即“销售1部”)。使用SUMPRODUCT函数计算满足条件的单元格个数。

发表评论

后才能评论