SUBTOTAL 函数¶
1. 函数概述¶
SUBTOTAL 是 Excel 中用于“对列表/区域进行分类汇总”的常用函数,特别适合在筛选(AutoFilter)或分组/折叠(大纲)场景下进行统计。它的核心优势在于:可以根据你选择的功能编号,实现求和、计数、平均值、最大值、最小值等多种汇总方式,并且能够按设置自动忽略隐藏行或其他小计结果,从而让汇总更可靠、更易维护。
常见应用场景包括:
- 订单明细表筛选后,统计筛选结果的销售额/数量
- 部门费用表按分组折叠后,只统计当前可见的明细
- 数据清洗时,需要在同一区域快速切换“求和/平均/计数”等汇总口径
2. 基础语法¶
3. 参数说明¶
3.1 function_num(功能编号)¶
function_num 决定 SUBTOTAL 使用哪一种汇总计算,并决定是否忽略隐藏行。它是一个数字,主要分两大类:
- 1~11:忽略“筛选隐藏行”,不忽略“手动隐藏行”(在很多版本/场景下表现为:筛选隐藏会忽略,手动隐藏是否忽略取决于 Excel 行为与数据结构)
- 101~111:忽略“筛选隐藏行”和“手动隐藏行”(更常用、更稳妥)
下面是常用编号对照表(建议优先使用 101~111 版本):
| 汇总功能 | 不忽略手动隐藏 | 忽略手动隐藏 |
|---|---|---|
| AVERAGE 平均值 | 1 | 101 |
| COUNT 计数(数值) | 2 | 102 |
| COUNTA 计数(非空) | 3 | 103 |
| MAX 最大值 | 4 | 104 |
| MIN 最小值 | 5 | 105 |
| PRODUCT 乘积 | 6 | 106 |
| STDEV.S 样本标准差 | 7 | 107 |
| STDEV.P 总体标准差 | 8 | 108 |
| SUM 求和 | 9 | 109 |
| VAR.S 样本方差 | 10 | 110 |
| VAR.P 总体方差 | 11 | 111 |
- 你希望“无论筛选隐藏还是手动隐藏都不统计”,优先用 109/103/101 等 100+ 编号
- 你只关心筛选结果(最常见),用 109(求和) 往往最省心
3.2 ref1, [ref2], ...(引用区域)¶
ref1:第一个要汇总的区域(必填)[ref2], ...:额外要汇总的区域(可选)
注意点:
- 参数通常传入单列数据区域更清晰(例如
C2:C100) - 也可以传入多个区域并进行合并汇总(例如两段不连续区域)
- 在列表场景中,通常对“明细列”做汇总,不建议直接对整张表(多列)做 SUBTOTAL,避免口径不清
4. 基础用法示范¶
下面示范以“数据在第 2 行到第 100 行”为例,你可以按自己的表结构替换区域。
4.1 对筛选后的可见行求和¶
需求:对金额列进行求和,筛选后只统计筛选结果。
说明:
109表示 SUM 且忽略隐藏行- 筛选条件变化时,结果自动更新
4.2 统计可见行的“非空单元格数量”¶
需求:筛选后统计“订单号”列里非空的条数。
说明:
103表示 COUNTA 且忽略隐藏行- 适合“文本/编号”列,因为它按非空计数
4.3 统计可见行的“数值数量”¶
需求:筛选后统计数量列中为数值的单元格个数。
说明:
102表示 COUNT(仅数值)且忽略隐藏行- 如果该列包含空值或文本,文本不会被计入
4.4 求可见行平均值¶
需求:筛选后计算单价列平均值。
说明:
101表示 AVERAGE 且忽略隐藏行- 非数值单元格会被当作不参与平均计算
4.5 求可见行最大值/最小值¶
需求:筛选后查看金额列最大值与最小值。
说明:
104最大值,105最小值- 常用于筛选后快速判断波动范围
4.6 多区域合并汇总¶
需求:汇总两段不连续的金额区域。
说明:
- SUBTOTAL 支持多个引用区域作为参数
- 适合数据被拆分、或你只想对某些段落做汇总
4.7 避免重复统计“小计中的小计”¶
当你的表里已经存在某些行是“分组小计”,而你在总计处又做一次汇总时,容易发生重复计入。SUBTOTAL 的特点是:在同一列里若已用 SUBTOTAL 做小计,再用 SUBTOTAL 做总计,通常可以避免把这些小计再次计入(尤其在标准小计结构中表现很好)。
示例(思路示范):
- 每个部门末尾一行是小计:
=SUBTOTAL(109, 部门明细范围) - 全表总计再用:
=SUBTOTAL(109, 全部明细列范围)
这种结构下,总计不会把“部门小计行”当作普通明细重复累加,从而避免“双重统计”。
5. 总结¶
SUBTOTAL适合用于列表筛选后统计与分组折叠后统计,能让汇总随可见数据自动变化。-
记住两类编号:
9/3/1等:基础功能编号109/103/101等:更常用,能更稳定地忽略隐藏行
-
最常用组合:
- 求和:
=SUBTOTAL(109, 区域) - 计数非空:
=SUBTOTAL(103, 区域) - 平均:
=SUBTOTAL(101, 区域)
- 求和:
-
维护建议:优先对单列明细区域汇总,并尽量保持数据区域结构一致,后续筛选、扩展数据都会更省心。