使用 Excel 新函数 Groupby 快速分组

xxn 阅读:45516 2024-12-22 14:00:56 评论:0

优秀的Excel函数,颠覆传统,成功之路已经开启!

大家好,我是数据处理领域的小爽~

每个季度,公司都需要对员工的业绩进行排名,如果业绩相同,则需要将姓名合并在一起,具体如下所示:

从左侧表格中的数据,如何合并成右侧的表格呢?

1、传统方法

看看这个案例,这不就是典型的中国式排名 + 合并相同项吗?

PS:中国式排名是指重复数据不占用名次,排在其之前的最大值名次减一。

首先,我们需要创建一个辅助列,用于计算中国式排名:

=SUM(--(UNIQUE($B$2$B$20)=B2))

公式很容易理解。首先对业绩数据进行去重(Unique函数),然后统计大于等于当前业绩的数量,即得到中国式排名。

然后,合并相同项,也就是汇总姓名:

=TEXTJOIN(",",,FILTER($A$2:$A$20,$C$2:$C$20=E2))

最后,使用Index+Match函数匹配业绩即可:

=INDEX($B$2:$B$20,MATCH(E2,$C$2:$C$20,0))

以上就是传统的思路。

我们也可以换个角度思考:将业绩分组,合并分组后的姓名,对分组后的业绩进行降序排序,添加名次索引。

不理解?没关系,看下面的案例 ↓

2、Groupby函数

Excel中是否有用于分组的函数?

当然!Office365和WPS都已经更新了Groupby函数。

Groupby函数的作用就是根据某些字段对数据进行分组

第一种方法用了多个函数是吧?

使用Groupby函数,只需要一个公式:

=GROUPBY(B2:B20,A2:A20,ARRAYTOTEXT,00,-1)

先了解Groupby函数的基本语法:

=GROUPBY (row_fields,values,function,[field_headers],[total_depth],[sort_order],[filter_array]) =GROUPBY(行字段,值,汇总方式,[是否包含标题],[是否显示总计小计],[排序依据],[筛选依据])

看一下公式:

=GROUPBY(B2:B20,A2:A20,ARRAYTOTEXT,0,0,-1)

行字段:B2:B20,即业绩列。

值:A2:A20,即姓名列。

汇总方式:Arraytotext,将姓名列合并为一个字符串。Arraytotext函数将数组转换为字符串,默认使用逗号分隔。

[是否包含标题]:0,不包含标题。

[是否显示总计小计]:0,无总计。

[排序依据]:按值字段列排序,数字表示在结果表中的列号,正数表示升序,负数表示降序。这里设定为-1,表示降序排序。

也可以通过数据透视表来理解Groupby函数。

Groupby函数有三个必选参数。

=GROUPBY (行字段,值,汇总方式)

行字段:业绩列,对应数据透视表的行字段。

值:姓名列,对应数据透视表的值。

汇总方式:Counta函数,对应数据透视表的值计数。

希望通过上面的内容能更好地理解Groupby函数的作用。

想要用顿号合并姓名,可以直接修改第三个参数,使用Lambda匿名函数。

=GROUPBY(B2:B20,A2:A20,LAMBDA(s,TEXTJOIN("、"s))0,0-1)

最后,添加名次索引即可。

也许有人会问,有没有不使用函数的方法呢?

很好的问题!我们还可以使用PowerQuery,只需简单操作,即可完成。

3、PowerQuery操作

将数据导入PQ编辑器。

全选数据,点击【数据】选项卡,选择【来自表格 / 区域】-【确定】。

在编辑器中,选择业绩列,点击【主页】选项卡-【分组依据】,打开分组依据对话框。

新列名:姓名合并

操作:所有行

现在已经进行了分组。

然后对 each _ 进行修改。

修改如下图所示,将姓名列合并:

each Text.Combine([姓名],"、")

Text.Combine函数用于合并姓名,类似于Excel中的Textjoin函数。

选择业绩列下三角-【降序排序】。

最后,添加名次索引。

在【添加列】选项卡,点击【索引列】,选择【从1开始】。

这样就会看到一个索引列。

修改公式中的索引为“名次”。

以上就是PowerQuery的操作方法。

4、总结

本文重点介绍了根据业绩排名,合并相同排名姓名的表格处理技巧。

总共分享了三种方法。

传统方法:

在中国式排名中,重复数据不占用名次,因此使用Unique去重,再计算大于等于该值的数量,即可得到中国式排名。

在合并相同项时,采用Filter函数 + Textjoin函数的组合。

新函数Groupby:

基于业绩字段进行分组,值数据为姓名,汇总方式为姓名合并。可以视为数据透视表的一种操作。

其中一个参数指定排序方式,进行降序排序后,再添加索引,即得到相应的名次。

PowerQuery:

思路与分组、排序、添加索引类似

  • 分组依据

  • 修改合并方式 Text.Combine

  • 业绩降序排列

  • 添加索引列,从1开始

本文来自微信公众号:秋叶Excel (ID:excel100),作者:小爽

广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考。

声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

搜索
排行榜
关注我们

扫一扫关注我们,了解最新精彩内容