SAP 剑客
于 2017-02-13 16:53:00 发布
29031
收藏 53
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
工作中,生活中不免会遇到需要整理大量复杂数据的情况,单纯的靠手动去搜索统计固然可以,但是效率极其低下。
如下图,列举了 1990 年~ 2015 年 NBA 美职篮全明星的参赛名单,现在需要统计出每个人的参赛次数。
实现效果如下:
下面直接来简单谈一下它的实现思路,首先我们整理掉一些不需要的数据,例如 “NBA2008 年全明星阵容” 相关的字眼。
我们利用第一列的 “文本筛选器” 剔除掉开头不为 “NBA” 的行。
接着利用我们熟悉的伎俩进行拆分操作。
根据分隔符 “:” 分割阵容以及姓名。
再根据 “、” 分割第二列数据(注意一定要选择“在出现的每个分隔符处”)。
接着我们选中第一列,进行除此列外的逆透视列,这个功能一直觉得特别好用。
删除我们不需要的列,更改列名,然后根据最后有一列姓名做分组依据。
大概的效果已经达成,但是我们的需求是将相同入选次数的明星都放在一起。
这个时候我们要做的还是分组依据(其实可以直接用函数完成,但是为了通俗易懂,巩固之前所学的函数 Text.Combine)。
这个时候出现了 Error,意料之中,我们所需的函数闪亮登场了。
替换
Table.Group(分组的行, {“入选次数”}, {undefined{“姓名”, each List.Sum([姓名]), type text}})
为
Table.Group(分组的行, {“入选次数”}, {undefined{“姓名”, each Text.Combine([姓名]), type text}})
结果貌似略丑啊,原因是没有分行显示,这个时候介绍一个小窍门。
上面的 Text.Combine 可以添加一个分隔符,我们不妨直接添加分行符号。
Table.Group(分组的行, {“入选次数”}, {undefined{“姓名”, each Text.Combine([姓名],”#(lf)“), type text}})
这个时候大功告成!
然后保存加载到新工作簿,发现格式错了,完了,居然没有换行。
不要慌张,这个是因为没有点击 “自动换行”。
最后我们按照次数降序排列,达到最终目的。
模板下载路径:http://download.csdn.net/detail/zhongguomao/9754625
https://saper.blog.csdn.net/article/details/55050222