跳转至

GROUPBY 函数

函数概述

GROUPBY 用一个公式把明细数据按“分组字段”汇总成一张动态汇总表,支持分组、聚合、排序、筛选等操作,效果类似数据透视表,但结果会随源数据自动溢出更新。

可用于:按年份汇总销售额、按产品统计订单数、按部门计算平均绩效、做分组后再排序的排行榜等。

基础语法

=GROUPBY(row_fields, values, function, [field_headers], [total_depth], [sort_order], [filter_array], [field_relationship])
  • 前 3 个参数必填:分组字段要汇总的值聚合方式
  • 返回结果是溢出数组(动态数组),通常直接生成“行标题 + 汇总值”的二维表。

参数说明

参数 必填 含义 常见取值/要点
row_fields 用于分组的列(可多列) 需要“按列”组织的数据区域;多列会形成多级分组行标题
values 参与聚合的数值列(可多列) 多列会产生多项聚合结果列
function 聚合函数/λ 可用 SUMAVERAGECOUNT 等,也可提供 λ;还能给“λ向量”做多重聚合
field_headers 是否有表头及是否输出表头 缺省自动;0/1/2/3 控制“无/有但不显示/无但生成/有且显示”
total_depth 是否显示小计/总计 缺省自动;0/1/2/-1/-2 控制无/总计/总计+小计/置顶总计/置顶总计+小计
sort_order 排序规则 用数字指向列:先 row_fields 列、再 values 列;负数表示降序;也可给向量
filter_array 过滤条件(布尔列) 一列 TRUE/FALSE,长度需与 row_fields 对应行数一致
field_relationship 多分组列的关系 0 层级(默认);1 表格关系(各列独立排序;不支持小计)

基础用法示范

下面用一份示例数据说明(你可把它理解为一张 Excel 表:销售表):

年份 产品 区域 销售额
2024 A 华东 120
2024 B 华北 80
2025 A 华东 160
2025 B 华东 90

示范1:按年份汇总销售额

=GROUPBY(销售表[年份], 销售表[销售额], SUM)

结果:两列(年份、销售额合计)。

示范2:按产品汇总并按销售额降序

=GROUPBY(销售表[产品], 销售表[销售额], SUM,,,-2)

说明:-2 表示按第 2 个输出列(聚合值列)降序排序。

示范3:多字段分组(年份+产品)

=GROUPBY(HSTACK(销售表[年份], 销售表[产品]), 销售表[销售额], SUM)

结果:行标题会出现两级(先年份,再产品),对应每组的销售额汇总。

示范4:加筛选(仅统计“华东”)

=GROUPBY(销售表[产品], 销售表[销售额], SUM,,, , 销售表[区域]="华东")

说明:filter_array 传入一列 TRUE/FALSE 来决定哪些行参与分组汇总。

示范5:多值列聚合(销售额与订单数)

  • 如果你有两列需要同时汇总,比如:销售额订单数
=GROUPBY(销售表[产品], HSTACK(销售表[销售额], 销售表[订单数]), SUM)

说明:values 传多列时,会在结果里输出多列聚合值。

总结

  • GROUPBY 的核心就是“三件套”:分组字段 row_fields + 汇总值 values + 聚合方式 function,其余参数用于控制表头、小计总计、排序与筛选。
  • 与数据透视表相比,它更适合做“公式驱动、可复用、可嵌套”的报表模块(例如放进模板里自动更新)。([Exceljet][3])
  • 如果你写博客想配图或动图,最推荐展示:基础汇总(示范1)→ 排序(示范2)→ 筛选(示范4)的渐进案例链路,读者最容易上手。