你现在的位置:
函数GROUPBY 按指定字段进行聚合汇总
一、函数概述
GROUPBY 是 Excel 365 和wps新增的强大函数,用于按指定字段进行聚合汇总,效果类似于数据透视表,但完全通过公式实现 。
核心优势:
- ✅ 公式化操作:无需手动创建透视表,结果自动更新
- ✅ 动态数组:数据变化时结果自动刷新
- ✅ 多列分组:支持按多个字段层级分组
- ✅ 文本聚合:支持 ARRAYTOTEXT 等函数合并文本
- ✅ 灵活计算:可同时进行多种聚合运算(求和、计数、平均等)
二、语法结构
基础语法(3个必需参数)
=GROUPBY(行字段, 值字段, 汇总函数)
完整语法(8个参数)
=GROUPBY(
row_fields, ← 必需:分组依据的列数据
values, ← 必需:要聚合的数值/文本列
function, ← 必需:聚合方式(SUM/AVERAGE/COUNT等)
[field_headers], ← 可选:0=无, 1=有但隐藏, 2=无但生成, 3=有且显示
[total_depth], ← 可选:0=无, 1=总计, 2=小计+总计, -1/-2=顶部显示
[sort_order], ← 可选:正数=升序, 负数=降序(指定结果列号)
[filter_array], ← 可选:筛选条件数组
[field_relationship] ← 可选:多列分组时的字段关系
)
三、参数详解
| 参数 | 必需 | 取值范围 | 说明 |
|---|---|---|---|
| row_fields | 是 | 单列或多列 | 分组依据,如 B2:B20 或 B2:C20 |
| values | 是 | 单列或多列 | 要聚合的数据,如 D2:D20 |
| function | 是 | SUM/AVERAGE/COUNT/COUNTA/MAX/MIN/PERCENTOF/ARRAYTOTEXT 等 | 聚合计算方式 |
| field_headers | 否 | 0/1/2/3 | 标题行处理方式(推荐用3) |
| total_depth | 否 | 0/1/2/-1/-2 | 总计/小计显示方式 |
| sort_order | 否 | 整数 | 按结果第N列排序(负数降序) |
| filter_array | 否 | 布尔数组 | 筛选符合条件的数据 |
| field_relationship | 否 | 0/1/2 | 多列分组时的关系设置 |
四、实用示例
示例 1:基础分类汇总(按销售员汇总销售额)
=GROUPBY(B2:B201, E2:E201, SUM, 3)
- B2:B201:销售员列(分组依据)
- E2:E201:销售额列(求和对象)
- SUM:求和函数
- 3:显示标题行
效果:生成销售员 × 销售额的汇总表,自动包含总计行
示例 2:多字段分组(按销售员+产品规格汇总)
=GROUPBY(B2:C201, D2:E201, SUM, 3)
- B2:C201:销售员和产品规格两列(多层级分组)
- D2:E201:数量和金额两列(同时汇总)
- 结果:显示每个销售员下各产品规格的汇总
示例 3:多聚合计算(同时求和、计数、百分比)
=GROUPBY(D4:D104, E4:E104, HSTACK(COUNT, SUM, PERCENTOF), 1)
- HSTACK:横向堆叠多个函数
- 结果:同时显示计数、求和、占比三列
不同列用不同聚合方式:
=GROUPBY(B2:B201, D2:E201, HSTACK(SUM, AVERAGE))
- D列求和,E列求平均
示例 4:显示小计和总计(多层级分组)
=GROUPBY(B2:C201, D2:E201, SUM, 3, 2)
- 2:显示小计(按第一列分组)和总计
- 注意:只有 row_fields 为多列时才能显示小计
总计显示在顶部:
=GROUPBY(B2:C201, D2:E201, SUM, 3, -2) ← -2表示顶部显示小计+总计
示例 5:排序功能(按销售额降序)
=GROUPBY(B2:B201, E2:E201, SUM, , , -2)
- -2:按结果第2列(销售额)降序排列
- 正数:升序,负数:降序
示例 6:文本聚合(合并同类项)
按部门合并人员姓名:
=GROUPBY(A2:A20, B2:B20, ARRAYTOTEXT, 3, 0)
- ARRAYTOTEXT:将多个姓名用逗号合并为文本
自定义分隔符(用顿号):
=GROUPBY(B2:B20, A2:A20, LAMBDA(s, TEXTJOIN("、", , s)), 0, 0, -1)
示例 7:筛选功能(按条件汇总)
仅统计男性员工:
=GROUPBY(A2:A20, B2:B20, ARRAYTOTEXT, 3, 0, , C2:C20="男")
- C2:C20=”男”:筛选条件,只汇总性别为男的记录
排除特定行(如排除”Total”开头的行):
=GROUPBY(B1:B19, D1:D19, SUM, 3, 0, -2, LEFT(A1:A19, 5) <> "Total")
示例 8:超级查找功能(一对多查找并合并)
根据日期查找所有贷款记录:
=GROUPBY(C2:C17, A2:A17 & B2:B17, ARRAYTOTEXT, 3, 0)
- 将同一日期的所有贷款行(银行+金额)用逗号合并
- 比 VLOOKUP 更强大,解决一对多查找难题
示例 9:业绩排名+合并姓名(中国式排名)
=GROUPBY(B2:B20, A2:A20, ARRAYTOTEXT, 0, 0, -1)
- 按业绩分组,合并相同业绩的姓名
- -1:按值字段降序(业绩从高到低)
- 添加序号列即可得到不重复排名
示例 10:自定义 LAMBDA 计算
四舍五入到千位:
=GROUPBY(B4:B16, D4:D16, LAMBDA(x, ROUND(SUM(x), -3)), 3)
- 先求和,再四舍五入到最接近的1000
五、注意事项
| 注意点 | 说明 |
|---|---|
| 版本要求 | 仅 Excel 365 支持,WPS 也已更新此函数 |
| #SPILL! 错误 | 结果区域被占用时显示,需清空下方单元格 |
| 小计限制 | 只有 row_fields 为多列时才能显示小计,否则报错 |
| PERCENTOF 要求 | 值字段必须为数值,文本会导致 #DIV/0! 错误 |
| 动态范围 | 建议将数据源转为 Excel 表格(Ctrl+T),公式自动扩展 |
| 无格式 | 函数不应用格式,需手动设置数字格式、条件格式等 |
六、与 PIVOTBY 的区别
| 特性 | GROUPBY | PIVOTBY |
|---|---|---|
| 维度 | 仅行分组(一维) | 行+列分组(二维) |
| 参数数量 | 8个 | 11个 |
| 适用场景 | 简单分类汇总 | 交叉透视分析 |
| 关系 | 基础版 | 加强版(包含 GROUPBY 所有功能) |
七、最佳实践建议
- 使用表格结构化数据:数据源转为 Excel 表格,公式自动扩展
- 配合其他新函数:
HSTACK/VSTACK:多列/多表合并CHOOSECOLS:选择特定列LET:定义变量简化复杂公式
- 标题行处理:推荐用参数
3(有且显示),使结果更清晰 - 排序技巧:负数降序,正数升序,数字代表结果表中的列号

发表回复