groupby函数是一个超级透视器: excel不加班搞定数据分类汇总
脚本之家
GROUPBY函数是Excel和WPS表格新增的动态数组函数,用于对数据进行快速分组统计,类似数据透视表但更加灵活。它可根据指定字段对数据分类汇总,并自动生成动态数组结果。
参数挺多,但都挺好理解:
=GROUPBY(行字段, 汇总区域, [聚合函数], [标题], [总计], [排列方式], [筛选条件], [字段关系])
1、单列行字段汇总
输入公式:
=GROUPBY(A2:A5,C2:C5,SUM)
分组依据的行字段A2:A5(月份),需要汇总的数据区域C2:C5(销售额),聚合函数SUM(求和函数)。即对每个月份的销售额进行汇总求和。
2、多列行字段汇总
输入公式:
=GROUPBY(A2:B5,C2:C5,SUM)
分组依据的行字段A2:B5(月份与销售员),需要汇总的数据区域C2:C5(销售额),聚合函数SUM(求和函数)。即对每个月份各个销售员的销售额进行汇总求和。
3、多函数组合(求和、平均、计数)
输入公式:
=GROUPBY(B2:B5,C2:C5,HSTACK(SUM,AVERAGE,COUNT))
HSTACK为横向合并函数,此时将多个函数平行合并(SUM,AVERAGE,COUNT),对同一列数据分别执行不同计算,分别为求和、求平均值,计数。
4、标题显示(是否显示原数据表头)
输入公式:
=GROUPBY(A1:B5,C1:C5,SUM,3)
我们只需要将第4参数修改为模式3,即可将首行标题行显示出来。
注:第一参数与第二参数的数据区域需要包含首行标题行。因为只有当标题行被包含在了A1:B5与C1:C5区域之内,我们才会有选择显示或不显示标题的权利。
修改第4参数:
=GROUPBY(A1:B5,C1:C5,SUM,1)
我们只需要将第4参数修改为模式1,即可将首行标题行隐藏。
注:第一参数与第二参数的数据区域需要包含首行标题行。因为只有当标题行被包含在了A1:B5与C1:C5区域之内,我们才会有选择显示或不显示标题的权利。
5、总计与小计(多层分组显示总计和小计)
通常默认省略跳过第5参数,此时默认显示总计行:
=GROUPBY(A1:B5,C1:C5,SUM,3)
当我们将增加第5参数调整为0时,总计行自动隐藏:
=GROUPBY(A1:B5,C1:C5,SUM,3,0)
当我们将第5参数调整为2时,总计行与小计行同时出现:
=GROUPBY(A1:B5,C1:C5,SUM,3,2)
当我们将第5参数调整为-1时,总计行更换为顶端总计行:
=GROUPBY(A1:B5,C1:C5,SUM,3,-1)
6、排序(按某列降序或降序排列)
默认省略跳过第6参数显示无规则乱序状态:
=GROUPBY(A1:B5,C1:C5,SUM,3,0)
当我们增加并将第6参数调整为“3”时:
=GROUPBY(A1:B5,C1:C5,SUM,3,0,3)
表示对第3列的“销售额”列,进行升序(从小到大)排序。
原则:第6参数是几表示对返回数组区域的第几列排序;如果是正数,表示升序排序;如果是负数,表示降序排序。
7、筛选
当我们省略或跳过第7参数时,表示无条件分组统计:
=GROUPBY(A1:B5,C1:C5,SUM,3,0,3)
当我们添加第7参数时:
=GROUPBY(A1:B5,C1:C5,SUM,3,0,3,B2:B5="李四")
增加条件B2:B5="李四",即只有当B2:B5销售员数据区域为“李四”时,我们才进行分组统计,即只筛选销售员为李四的分类汇总结果。
以上全部为GROUPBY函数基础参数的解释。那么我们在实际的职场工作中用它高效解决最多的问题是什么呢?下面我们继续举两个实用的案例,看看GROUPBY函数在其中发挥什么关键的作用。
高频使用案例
案例1:文本合并
如下图所示:
我们想要将A列相同的省份信息所对应的城市信息合并到一行显示。
我们输入函数公式:
=GROUPBY(A1:A5,B1:B5,ARRAYTOTEXT,3,0)
第3参数聚合函数设置为ARRAYTOTEXT函数,用于将数组或单元格区域中的数据转换为文本格式,并合并到一个单元格中或以文本数组的形式返回。这样本例可将城市合并为文本合并到一个单元格中。第4参数3显示标题。第5参数0不显示总计行。
案例2:二维表转一维表
我们想要将A1:D4区域二维表转换为F1:H10区域的一维表。
聚合函数核心逻辑:
=IF({1,0},N,TOCOL(B1:D1))
- {1,0}:生成数组 {TRUE, FALSE},用于引导后续操作。
- TRUE(1):保留原始产量数值(即N代表的当前值)。
- FALSE(0):提取季度标签(通过TOCOL转换)。
- N:代表当前分组产量数值,例如“1车间”对应的原始产量数值6000、8000、3500。作用是将横向分布的产量数值按行转换为纵向单列。
TOCOL(B1:D1):B1:D1:原始季度标题(如“1季度”“2季度”“3季度”)。TOCOL(B1:D1):将横向的季度标题转换为垂直列(如“1季度、2季度、3季度”循环排列)。目的是为每个产量数值匹配对应的季度标签。每个产量数值会循环对应到季度标签(“1季度、2季度、3季度”),形成“产量数值+季度标签”的配对数组溢出结果。
完善函数:
=GROUPBY(A1:A4,B1:D4,IF({1,0},N,TOCOL(B1:D1)),,0)
GROUPBY函数对A1:A4行字段作为分组依据,即按“车间”分组。值字段B1:D4(需处理的数据区域)。用上一步IF函数作为核心聚合函数逻辑,不显示标题,不显示总计。