ARTICLE · 1351849
一文搞定Excel的SUBTOTAL 函数
筛选一开,合计就"翻车"?这个会数人头的函数,专治报表里的假合计
SUBTOTAL :只统计看得见的行
筛选华东,底下的 SUM 合计纹丝不动;状态栏的数只能看不能存。其实 Excel 早有个函数专干这事:你筛什么,它就算什么,公式从头到尾不用改。它就是 SUBTOTAL 。
一、筛选之后, SUM 给你的合计是"假"的
领导说:"把华东的订单筛出来,合计给我看看。"
你点了筛选,结果发现底下的 SUM 合计纹丝不动——还是全公司的总数。只好手动圈一片区域,瞟一眼右下角的状态栏,圈多了算错,圈少了漏行。
更糟的是,状态栏的数只能看不能存。想发到工作群、写进周报,还得手抄一遍;领导中途说"再帮我只看已回款的",又得重新圈、重新抄。来回三五次,一个下午就耗在"圈数字"上。
SUBTOTAL 天生只统计屏幕上看得见的行。你筛什么,它就算什么。
二、 SUBTOTAL :语法就两个参数
=SUBTOTAL(功能代码, 统计区域)功能代码 |
统计区域 |
常用的功能代码,收藏这张小表备用:
用人话说:SUM 是"不管筛没筛全部都算", SUBTOTAL(9, 区域) 是"只算看得见的行"。

三、案例 1 :筛选后自动求和
在金额列底下的 D802 写:
=SUBTOTAL(9, D2:D801)不筛选时显示全部合计 326,800 ;点筛选选"华东",它立刻变成 98,200——只算看得见的那部分。换成"华南",又自动变成华南的数。
对比一下:同一个位置写 =SUM(D2:D801),不管怎么筛,永远是 326,800 。很多人报表"数字对不上",就出在这里——看着像合计,其实算的根本不是筛选后的数。
临时看个数不写公式也行:选中筛选后的区域,看窗口右下角状态栏的"求和",它显示的也是筛选后的结果。但状态栏的数抄不下来、存不住,要写进报表还得靠 SUBTOTAL 。
四、案例 2 :计数用 2 还是 3 ,看列里存的是什么
领导问的是"多少单",不是多少钱。把功能代码换成 2 :
=SUBTOTAL(2, D2:D801)筛选"华东"后显示 27 ,就是华东成交 27 单。
注意: 2 只数数字。如果你要数的是文本列(订单号带字母、是文本),代码换成 3 :
=SUBTOTAL(3, C2:C801)一句话记:2 数数字, 3 数非空单元格。金额列用 2 ,文本列用 3 。
新手常犯的错:拿 2 去数文本列,结果永远是 0 ,还以为函数坏了。其实不是坏了,是代码选错了——数东西之前先看一眼那一列存的是数字还是文字,选对代码一次就成。
五、案例 3 :小计嵌套,总计不会重复加
分部门做汇总,每个部门后面插一行小计,全表最底下还要一个总计。如果小计用 SUM 、总计也用 SUM ,总计就会把所有小计再加一遍,数字直接翻倍。
用 SUBTOTAL 就没这个坑:
各部门小计行写 =SUBTOTAL(9, D2:D25)(区域换成各自部门的行)总计行写 =SUBTOTAL(9, D2:D800)
SUBTOTAL 遇到区域里嵌着的其他 SUBTOTAL ,会自动跳过。所以总计只算明细行,小计加多少遍都不会重复。
这个特性在层级汇报里特别好用:给领导发的表,部门小计、全公司总计都摆得明明白白,数字还能跟着他自己加的筛选一起变,谁看都不会算错。
六、 SUBTOTAL 还是 SUM ?一句话选型
两个函数不是替代关系,分工很清楚:
用 SUM |
用 SUBTOTAL |
表底部可以两个都放:左边一格 SUM 标注"总计",右边一格 SUBTOTAL 标注"当前筛选合计",领导想看哪个看哪个,你一个字都不用改。
七、三个容易踩的坑
9 和 109 不是一回事 =SUBTOTAL(109, D2:D801)。 |
别拿它做全量合计 |
"分类汇总"按钮生成的就是它 |
最后,把全文压缩成一句话:
SUBTOTAL 只统计看得见的行: 9 求和, 2/3 计数, 109 连手动隐藏的行也忽略;固定总数用 SUM ,跟着筛选变的数用 SUBTOTAL 。
学 好 E x c e l · 告 别 无 效 加 班
还在为报表加班、被数据难题困住?
与其碎片化刷短视频自学,不如系统学好 Excel,掌握能落地的职场数据技能。
👉 点击文末【阅读原文】、报名学习。
学好 Excel,提升效率,告别无效加班!
觉得有用的话,点个赞和在看,我们下期见。















































































