Excel之PowerQuery 多表关系处理
网友提问:

其实表关系,当你处理不了的时候,就去找创建表的人,他一定是最懂的那个。
外人不懂你的业务,我能处理,但是方法不一定是最好的。PowerQuery处理完上载后使用DAX可以进一步分析。
用一句经典的话来讲:像我这种完全不知道这表是干什么的人,只能给你写出代码来,至于刷新时间,就不得而知了。解铃还须系铃人,建议找表的创建人处理。
传说中有三张表,如下



变成:

将三张原始表放在一个工作簿中
再打开一个新的工作簿,数据~获取数据~来自文件~从工作簿
1、先处理原始表2

先删除重复行

保留需要的列,删除不需要的列

2、主页~合并查询~将合并查询做为新查询

得到如下表格:

展开上表中【原始表2】这一列

得到结果:这张表的名字叫【合并1】

3、再新建合并查询
合并1与原始表1,通过【材料】列左外连接

得到下表,这张表叫合并2

4、进入分析阶段
我用截图的方式,将每个Table的表都程现出来

他的目的是,当外面大表的金额与这一行【原始表1】那列的Table里面的金额相等时,就取那一行。如下图所示,红、蓝、绿、灰都可以确定,但是到了黄颜色那里,它取账单号重复的两行,金额之和正好接近1542.87

5、开始行动,也是最关键的一步
新建列,筛选外面表金额=原始表1那列Table里面的金额时,就筛选,如果筛选表为空,那就对原始表1那列Table新建列对账单号分组计数,并筛选计数结果不等于1的,否则就返回筛选外面表金额=原始表1那列Table里面的金额的表。

我们只需要每个Table中的数据列,所以修改上面的公式:

6、展开这列

结果:

7、再展开这列

结果:

8、删除不需要的列,排序你保留的列

上载后:

PS: 每次展开时,想做动态就用Table.ColumnName去获取动态表头,之前的文章中多次提到,在此不再重复。
本文章配套案例文件,请到评论区置顶下载

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