Microsoft Lab
全部软件
Excel筛选(Filter)约 4 分钟

SUBTOTAL Function SUBTOTAL 函数

重点内容


适用版本

桌面版通用(Excel 365 / 2021 / 2019 等)。


问题:筛选后 SUM 算错

筛选隐藏的行,SUM 函数仍然会把它们计算进去——因为 SUM 不管一行是不是被筛选隐藏,只要还在数据范围内就照算。


SUBTOTAL 解决筛选隐藏行的问题

公式:=SUBTOTAL(109,range)

  • 第一个参数 109 相当于 SUM(求和),忽略「被筛选隐藏」的行
  • 应用筛选后,SUBTOTAL 的结果会自动只计算目前显示出来的行,SUM 则不会更新
📷 画面提示

筛选后同一份数据,SUM 公式结果和 SUBTOTAL(109,...) 公式结果并排对比,数字不一样


第一参数对照表(筛选隐藏 vs 手动隐藏)

📌 关键区别:数字 1~11 和 101~111 这两组功能相同(1=AVERAGE、9=SUM、2=COUNT...,101=AVERAGE、109=SUM、102=COUNT... 依此类推),但对「手动隐藏的行」处理方式不同:

  • 筛选隐藏的行:不管用 1~11 还是 101~111,SUBTOTAL 都会自动忽略,两组数字在这一点上没有差别
  • 手动隐藏的行(自己选中行右键 Hide):101~111 会忽略手动隐藏的行,但 1~11 仍然会把手动隐藏的行算进去

函数速查

函数语法用途例子
SUBTOTAL=SUBTOTAL(function_num, ref1, ...)汇总计算,可选择是否忽略隐藏行=SUBTOTAL(109,B2:B20)
SUM=SUM(range)求和,不管行是否隐藏都会计算=SUM(B2:B20)

自动生成小计的两种方式

方式一:表格总计行

  1. 把数据转成 Table(Insert›Table或 Ctrl+T)
  2. 勾选 Table 设计选项卡的 Total Row(总计行)
📷 画面提示

Table 设计选项卡勾选 Total Row 后,表格底部自动出现的总计行

结果:Excel 会自动在表格底部加一行,并且用的正是 SUBTOTAL 函数,不用手打公式。

方式二:大纲小计功能 Data›Outline›Subtotal(详见 EP06),Excel 在插入小计行时用的也是 SUBTOTAL 函数。


学完你会

常见错误

  • 筛选数据后还在用 SUM 算总和,以为看到的数字已经排除了被筛选掉的行,实际上没有
  • 参数用错,比如想忽略手动隐藏的行却用了 9(而不是 109),结果手动隐藏的行还是被算进去
  • 以为 SUBTOTAL 会自动忽略「其他 SUBTOTAL 公式产生的小计行」——这其实是它的另一个特性(避免小计行被重复计入总计),但容易被误解成能处理所有嵌套情况

Sources

Blog / Website:

  1. Subtotal
只记在你的浏览器里,换设备不会同步。