![](http://image109.360doc.com/DownloadImg/2021/06/2917/225271040_1_20210629050224895) 今天也是论坛上找的一个实际问题,函数等方法可能已经有人写过了,目前还没有Power Query M函数的写法,所以我们就来填补一下,进一步感受PQ的强大和强化知识点!这是PQ实战第几期忘记了,文末推荐阅读总结了一下! 需求:应该不用我解释了吧!突然换统计维度,就是这么坑!如下图 其实到这里,我也还没开始写M函数,但是脑中已经有了点思路.说一下目前的思路:人员姓名按符号拆分成list,然后展开,按照姓名重新分组,使用Table.FromColumns来构建结果!(如果你听不懂,也不要着急,毕竟只是我的大概思路)如果我们要显示成XX月XX日,还需要借助一个新的方式来转化一下:= Table.TransformColumns( 源,{{"日期",each DateTime.ToText(_,"MM月dd日")}}) 语法:Table.TransformColumns(表,{{字段,each 转化方式},{},{}……}可以针对多个字段按需要显示的格式转换或者做其他处理语法:DateTime.ToText(日期时间,文本显示格式)注意其中的MM不能是小写,小写在PQ中是分的意思! 因为我们不想新增一列处理,所以我们就在上步的基础上增加一个人员处理即可! 正好也能进一步学习Table.TransformColumns,多列转换!Text.Split 这个拆分函数比较简单,我们也多次使用了,不再啰嗦,拆分出来是一个List! Table.Group按照人员安排分组,分组后统计的列为对应的所有日期!Table.FromColumns(对一个的多列内容形成的list,对应的标题)以上是简单的讲解,最后我们调整一下,在PQ高级编辑器中来看一下完整的M函数写法:
![](http://image109.360doc.com/DownloadImg/2021/06/2917/225271040_10_20210629050227645_wm) 插播一条:本公众号一般都是0点左右推送,考虑到大家晚上都需要早点休息,从下次开始,推送时间基本在早晨7:30左右! 个人的建议:还是先把table、list和record三大类函数全部过一遍,做到基本知道对应的需求是否有类似的函数,在实战中配合#shared,边查编写,一定要有一定量的练习,比如把之前函数解法的问题,看看使用PQ是否能处理,尽量处理一遍!当然去找实际案例更好……
|