GROUPBY 函数¶
函数概述¶
GROUPBY 用一个公式把明细数据按“分组字段”汇总成一张动态汇总表,支持分组、聚合、排序、筛选等操作,效果类似数据透视表,但结果会随源数据自动溢出更新。
可用于:按年份汇总销售额、按产品统计订单数、按部门计算平均绩效、做分组后再排序的排行榜等。
基础语法¶
- 前 3 个参数必填:分组字段、要汇总的值、聚合方式。
- 返回结果是溢出数组(动态数组),通常直接生成“行标题 + 汇总值”的二维表。
参数说明¶
| 参数 | 必填 | 含义 | 常见取值/要点 |
|---|---|---|---|
| row_fields | 是 | 用于分组的列(可多列) | 需要“按列”组织的数据区域;多列会形成多级分组行标题 |
| values | 是 | 参与聚合的数值列(可多列) | 多列会产生多项聚合结果列 |
| function | 是 | 聚合函数/λ | 可用 SUM、AVERAGE、COUNT 等,也可提供 λ;还能给“λ向量”做多重聚合 |
| 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:按年份汇总销售额
结果:两列(年份、销售额合计)。
示范2:按产品汇总并按销售额降序
说明:-2 表示按第 2 个输出列(聚合值列)降序排序。
示范3:多字段分组(年份+产品)
结果:行标题会出现两级(先年份,再产品),对应每组的销售额汇总。
示范4:加筛选(仅统计“华东”)
说明:filter_array 传入一列 TRUE/FALSE 来决定哪些行参与分组汇总。
示范5:多值列聚合(销售额与订单数)
- 如果你有两列需要同时汇总,比如:
销售额与订单数:
说明:values 传多列时,会在结果里输出多列聚合值。
总结¶
GROUPBY的核心就是“三件套”:分组字段 row_fields + 汇总值 values + 聚合方式 function,其余参数用于控制表头、小计总计、排序与筛选。- 与数据透视表相比,它更适合做“公式驱动、可复用、可嵌套”的报表模块(例如放进模板里自动更新)。([Exceljet][3])
- 如果你写博客想配图或动图,最推荐展示:基础汇总(示范1)→ 排序(示范2)→ 筛选(示范4)的渐进案例链路,读者最容易上手。