欢迎光临散文网 会员登陆 & 注册

Excel之PowerQuery 表格整型 续集

2022-10-12 11:38 作者:孙兴华zz  | 我要投稿

网友提问:

我的疑问:

有如下一张表,一个公司成立了两个小组,张三和李四是小组的成员,孙兴华是保洁。这个事你知道,可是你没通知微软,计算机不知道。需要你告诉计算机谁是干什么。如果我说的没道理大家可以反驳。

你有两种方案,第一:做表时做规范,如下图,计算机就知道+号后面是保洁了

例如:张三、李四+孙兴华

第二种方案就麻烦点,你要准备一张一端表,待你将上面的人员变成一维数据后,将这张表的职务V过去。

当然其它方法还有,只是这两个方法零基础的人也知道我在说什么(可以不会做,但是必须知道我要做什么)。今天的内容我做完整匹配,不做模糊匹配。因为107集,您目前应该是三分之一还没看完。不适合使用太炫技能的方法。

第1步:将表格导入PowerQuery

第2步:将【商家编码】这列按“+”号分割成列表

第3步:展开列表

你用公式展开或者用鼠标展开都可以,建议使用鼠标操作

第4步:提取开头字母

这一步,你的思路要多,比如先截取前几个再提取字母。。。等等,根据你需求而定

第5步:准备一端表,做合并查询

我导入了一个叫表2的表格

与表1做合并查询,使用鼠标就搞定了,PowerQuery基础篇就讲了,如果不会做就不应该看到这里了。

第6步:将新增的表2那个列,变成文本

第7步:重点来了我们需要三次分组,写在一个公式里

第1次对修改列那张表的订单编号分组,如下图,现在x就是数据列的每个Table

再对每个table里面的表2那列分组,我们点进去可以看到如下效果,现在的每个table就是公式中的y

我们再对每个y按开头列进行分组

最终公式如下:

我们点Table到最后一层会看到如下效果

z就是数据列的每个table,我们需要取每个table中商家编码  & “*” & 每个table的行数

z[商家编码]{0} & "*" & Text.From(Table.RowCount(z)) & "份"

那我们将公式中的z修改成上面的代码,属于z的表就变成了文字

现在数据里的每个Table是y,我们需要将y里面的数据列连接在一起

 Text.Combine(y[数据])

我们需要知道 y[数据] 在公式的哪里体现

选中的部分是y,在他后面取【数据】列,最后将y[数据]放到Text.Combine里面合并

现在属于y的表也变成了文字

数据列的每个Table都是x了,将每个x转置

Table.Transpose(x)

现在就是找到x

选中的这部分是x,我们将他外面套上Table.Transpose

我们发现每张表需要提升标题,我还可以在套娃里面做,我怕观众晕,这步就拿出来修改列吧

第8步:修改列提升标题

第9步:展开数据列

得到结果:

与网友的目标表核对一下:

方法不止这一种,M函数有N种组合,DAX函数更多的是你对业务理解了就能写出来,M函数更多考验逻辑思维,凡是让你在这里背函数的,都是不想让你学会的,M函数目前有700多个,还在不停的增加,你背不下来,会默写的都不是背下来的,是因为经常用那个函数,函数的拼写自己留在了大脑中。

友情提示:

当你遇到问题时,如果是原数据,原需求,做到哪步卡住了,我已经将做好的数据发到评论区置顶中了,下载核对自己哪里做错了。改数据改需求,请重新提问。

PowerQuery合集:https://www.bilibili.com/video/BV1oa4y1j75e

更多教程:https://www.bilibili.com/read/cv10222110

Excel之PowerQuery 表格整型 续集的评论 (共 条)

分享到微博请遵守国家法律