Power Query批量合并Excel,还有这个好用的方法

教育   教育   2024-08-16 12:04   河南  

关于Excel数据的批量合并,之前介绍过很多种情况,一般是导入后展开直接合并,但是对于特殊的数据格式,并不能直接合并,比如一个文件夹中有三个excel文件,分别是下面这样的:

仔细观察这三个表会发现,每个表的列名都是该年的月份,如果简单合并,就丢失了年月维度的信息,并且2021年的列数与其他两年还是不等的,这都导致了不能按照之前的方法简单合并。

之前介绍的方法是利用自定义函数来合并,参考:

PowerQuery批量合并Excel,原来这个方法更好用

这个方法可以实现,但是发布后如果想设置计划刷新时,会有下面这个提示:

此数据集包含一个动态数据源。由于 Power BI 服务中不刷新动态数据源,因此不会刷新此数据集。

关于动态数据源,有些情况可以通过修改M公式解决,但并不总是都能找到方法,上面的情况就不容易解决,所以如果需要设置计划刷新,就不要使用自定义函数的方法了,对于上述表格的情况,其实还有个更简便的合并方法。

以上面的数据为例,我们从头开始,再介绍一下这种情况的批量合并操作的主要过程。

↑ 获取数据>文件夹

↑ 点击“转换数据”进入PowerQuery编辑器

↑ 添加列>自定义列

↑ 自定义列公式:Excel.Workbook([Content],true)

↑ 展开自定义列

然后就可以看到[Data]列(其他无关列可以删除),点击某一行的“Table”,就能看到某个原始表格的数据:


对于这一列不要直接展开,而是添加自定义列,对尚未展开的Table进行逆透视操作:

Table.UnpivotOtherColumns(
    [Data],
    {"门店"},
    "年月","金额"
)


Table.UnpivotOtherColumns是逆透视其他列的M函数,它将[Data]中的每一个表,除“门店”列之外的其他列进行逆透视,逆透视后生成的两列的列名分别命名为“年月”和“金额”。

添加的自定义列的效果如下:

这样每一行的表都是同样的格式了,然后直接展开自定义列,即可完成合并,合并后的表也已经是一维表,并且可以设置计划刷新而不会遇到动态数据源的问题。

这个方法的基本思路是在展开数据前,对数据进行逆透视,让每一行的Table变成同样的格式以后再进行合并。

如果你的数据需要在展开Table前进行一定的操作,都可以参考这个方法,关键是了解一些常用的M函数的用法。

关于PowerQuery批量汇总Excel文件,如果你还遇到其他特殊情况或者解决方案,欢迎留言分享。




PowerBI星球的最新版内容合辑,值得你收藏学习:
「PowerBI星球」内容合集


如果你想深入学习Power BI,欢迎加入PowerBI星球学习社群,获取更多学习资源,和6k+ 深度学习者一起精进~

PowerBI星球
海量干货,帮你轻松上手 Power BI
 最新文章