小勤:大海,上次你跟我说的分组合并同类项的方法(见文章《Excel固定类别内容分组合并同类项,PQ轻松实现》),只适用于分类情况不变的内容,但很多时候都是需要变化的啊。
大海:对的。那时因为没有讲过M语言及函数的相关内容,所以就告诉你一个通过单纯操作的方式来得到结果的方法。现在你通过《Power Query里的数值计算(聚合函数与操作)》不仅了解了PQ里的统计函数,还了解了分组操作形成的公式内容:
小勤:对的,其中List.Sum函数对按学员分组得到的各自的所有学分进行了求和。
大海:嗯。那么就可以来玩动态生成了。我们一边操作一遍理解其中的方法:
Step-01:获取数据
Step-02:分组
结果如下:
小勤:出错了!
大海:别紧张,我们就是要这样的内容。你想啊,刚才咱们分组的时候选择的是对课程进行求和,但课程是一堆文字,比如宋晓佩的课程是初级班、中级班和高级班,求和的话肯定会出错。
小勤:那怎么办?
大海:显然,我们不是想求和,是想将这几个内容连在一起,所以,我们可以修改一下其中的List.Sum函数来达到目的。
Step-03:修改函数,将分组操作生成公式中的【List.Sum([课程])】修改为【Text.Combine([课程],”、”)】
改完后回车,结果出来了:
小勤:啊。原来还可以这样玩。
大海:对的,实际上我们通过分组得到了每个学员的课程内容,然后就可以用Text.Combine函数进行组合了。这个函数的用法如下:
Text.Combine(列表,连接符)
- 列表:即多项内容形成的一个列表
- 连接符:用于连接列表各项内容的文本字符
小栗子:
- Text.Combine({“你”,”好”,“Excel到PowerBI”},”-“)
- 结果:你-好-Excel到PowerBI
小勤:啊,这个函数真好啊,在Excel里面却没有这么一个函数,结果每次做文本连接麻烦屎了。
大海:现在最新的Excel2016里也有一个类似的函数了,叫TEXTJOIN,用法跟Power Query里的Text.Combine函数基本一样。
小勤:啊。真好。
大海:嗯,通过这样的修改,我们得到的分组结果就是可以动态刷新的了,最后我们就可以将数据上载了。
Step-04:数据上载