没想到要学SUBTOTAL函数的粉丝挺多的,那就来个全面的讲解吧。当了那么多年的配角,今天终于当回主角。
1.汇总行的妙用
选择区域,插入表格,点设计,勾选汇总行。
汇总行,除了可以求和,还可以下拉选择计数,最大值等。
当然,插入表格和勾选汇总行这些步骤也可以省略,直接写公式也行。
求和就用:
=SUBTOTAL(109,D2:D11)
=SUBTOTAL(9,D2:D11)
计数就用:
=SUBTOTAL(103,D2:D11)
=SUBTOTAL(3,D2:D11)
SUBTOTAL一共可以代表11个函数,不过平常用得最多的是计数COUNTA和求和SUM。
2.筛选的时获取连续序号
正常情况下,用ROW、COUNTIF之类获取的序号,只要进行筛选就乱了。而SUBTOTAL刚好能解决这个问题。
=SUBTOTAL(3,B$2:B2)*1
区域采用混合引用,下拉的时候就逐渐变大,从而起到累计的作用。后面*1的作用,是防止最后一行当成汇总,导致筛选的时候出错。不加不一定会错,加了肯定没错。
现在筛选的时候,序号就是连续的,最后一行的汇总也跟着改变数据。
3.对筛选的结果进行条件求和、计数
正常情况下,SUMIFS、COUNTIFS不管有没筛选结果都一样,不能直接对筛选的结果进行判断。
不过可以利用SUBTOTAL可以对可见单元格生成序号。
=SUBTOTAL(3,D2)
现在要求大于200元的班级个数,就可以用这样的公式:
=COUNTIFS(F:F,1,D:D,">200")
对价格进行筛选,统计结果会自动改变。
同理,统计金额大于200元的班级的总金额,就可以这样设置公式。
=SUMIFS(D:D,F:F,1,D:D,">200")
核心点就是利用SUBTOTAL作为辅助列,生成数字1,再根据辅助列作为新的条件进行判断。
4.将筛选的结果合并在一个单元格内
这个跟案例3一样,也是用辅助列生成数字1,再借助这个判断。
输入公式,按Ctrl+Shift+Enter结束。IF部分的作用是让符合F列为1,D列大于200的,返回C列的值,否则返回空,再用TEXTJOIN将内容合并起来。
=TEXTJOIN("、",1,IF((F2:F11=1)*(D2:D11>200),C2:C11,""))
要将SUBTOTAL用好,还得学会很多函数才行。
推荐:VLOOKUP与LOOKUP的1,0详解
上篇:VLOOKUP与LOOKUP的1,0详解(通俗版)
还想知道什么用法?
作者:卢子,清华畅销书作者,《Excel效率手册 早做完,不加班》系列丛书创始人,个人公众号:Excel不加班(ID:Excelbujiaban)