今天用Excel在进行业务统计时,遇到一个小问题,Google了一下,又学了一招。一般人都会使用“自动筛选”功能,筛选完成后,会在表格左下角的状态栏中提示“从多少多少条记录中找到了多少多少个结果”。今天做的表格很复杂,在使用筛选过程中,由于统计的数据量太大,且筛选层次很多,好几层嵌套筛选的,而且还使用了分类汇总功能,结果发现有时左下角就不提示筛选结果了,很苦恼,搜索了一下,发现可以使用subtotal函数来统计筛选后的行数。SUBTOTAL函数返回列表或数据库中的分类汇总。通常,使用“数据”选项卡上“大纲”组中的“分类汇总”命令更便于创建带有分类汇总的列表。一旦创建了分类汇总,就可以通过编辑 SUBTOTAL 函数对该列表进行修改。语法SUBTOTAL(function_num, ref1, ref2, …)Function_num 为1 到 11(包含隐藏值)或 101 到 111(忽略隐藏值)之间的数字,指定使用何种函数在列表中进行分类汇总计算。Function_num
(包含隐藏值)Function_num
(忽略隐藏值)函数1101AVERAGE2102COUNT3103COUNTA4104MAX5105MIN6106PRODUCT7107STDEV8108STDEVP9109SUM10110VAR11111VARPRef1、ref2 为要进行分类汇总计算的 1 到 254 个区域或引用。实例(1):如果A1=1、A2=2、A3=3,则公式“=SUBTOTAL(9,A1:A3)”将使用SUM函数对“A1:A3”区域进行分类汇总(求和),其结果为6。实例(2):而象我们今天所想用到的计算筛选结果行数的功能,则应该使用CnuntA函数,即Function_num应该为3,如下:假如你的数据第一行是标题,从第二行开始到19行为数据,这样就总共有18行数据,如果你使用条件进行自动筛选后,符合筛选条件结果是8行。那么,筛选后可在20行输入公式“=SUBTOTAL(3,A2:A19) ”这样即可计算出筛选结果的行数为8。数据量少的时候,当然用不到这样的函数,如果你从1000条数据中进行筛选,筛选出来的结果有好几百条,你根本没有办法数的时候,使用subtotal函数就可以快速的统计出筛选出来的结果有多少行了。说明如果在 ref1, ref2,… 中有其他的分类汇总(嵌套分类汇总),将忽略这些嵌套分类汇总,以避免重复计算。当function_num 为从 1 到 11 的常数时,SUBTOTAL 函数将包括通过“隐藏行”命令所隐藏的行中的值,该命令位于“工作表”选项卡上“单元格”组中“格式”命令的“隐藏和取消隐藏”子菜单下面。当您要对列表中的隐藏和非隐藏数字进行分类汇总时,请使用这些常数。当 function_num 为从 101 到 111 的常数时,SUBTOTAL 函数将忽略通过“隐藏行”命令所隐藏的行中的值。当您只对列表中的非隐藏数字进行分类汇总时,请使用这些常数。SUBTOTAL 函数忽略任何不包括在筛选结果中的行,不论使用什么 function_num 值。SUBTOTAL 函数适用于数据列或垂直区域,不适用于数据行或水平区域。例如,当 function_num 大于或等于 101 时需要分类汇总某个水平区域时,例如 SUBTOTAL(109,B2:G2),则隐藏某一列不影响分类汇总。但是隐藏分类汇总的垂直区域中的某一行就会对其产生影响。如果所指定的某一引用为三维引用,函数 SUBTOTAL 将返回错误值 #VALUE!。在需要处理隐藏数据相关的应用时,SUBTOTAL是其它函数无法代替的,也是SUBTOTAL最大最重要的特点。