SUBTOTAL函数主要用于筛选和隐藏后的数据统计。本文主要以使用SUBTOTAL函数进行计数(即function_num为3、103)和求和(即function_num为9、109)为例,讲解SUBTOTAL函数的用法。
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函数计算满足条件的单元格个数。