excel

关注公众号 jb51net

关闭
软件教程 > 办公软件 > excel >

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))

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函数作为核心聚合函数逻辑,不显示标题,不显示总计。

推荐阅读:秒杀Excel数据透视表! excel新函数GROUPBY真强大