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

教育   教育   2024-08-14 12:05   河南  

之前分享过多次关于批量合并Excel的方法和技巧,如果你还不熟悉怎么做,可以参考这些文章:

PowerQuery合并Excel的这些技巧你应该掌握
PowerQuery批量合并多个Excel的指定列
Power Query批量合并Excel,数据不是从第一行开始怎么办?


这些技巧可以应对绝大多数情况,但仍有例外的情况,这篇文章分享一个更灵活、更普适的方法,利用自定义函数批量合并Excel。


以前分享的思路是,先批量合并文件夹里面的所有的Excel表格,汇总完成后后再进行整理。


而利用自定义函数的思路是,先对文件夹中的一个文件进行整理,并将处理的步骤封装成自定义函数,然后对文件夹中的所有文件调用该函数,最终实现所有文件的合并整理。


如果还不是太理解,这里用一个示例带你看看,这种方式是怎么实现文件的批量整理,然后合并到一起的。


以这个文件夹为例,有2019年到2021年3个年度的Excel文件:



而每年的数据结构分别是下面这样的:



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


由于上面几个表都是二维表,最后肯定要转换为一维表使用,那么,我们可以换个思路,先将每个表转换为一维表,一维表格式是完全相同的,最后再合并即可。


当然不需要手工单独对每个表转换为一维表,只需转换一个,然后将这个表的转换步骤应用到文件夹中的每个表上即可,下面是操作步骤。


1、将一个表导入到PowerQuery,并进行数据整理。


比如先将2019年的表,导入并逆透视为一维表,处理后的效果是这样的:


如果对PowerQuery操作不了解,可以先看看这篇文章:数据清洗中最常使用的十三招



2、将第一步的查询封装成自定义函数。


右键该查询,创建函数,可以命名为"单文件处理"。



生成自定义函数后,在编辑器中修改M代码,将excel文件的路径更改为自定义函数的参数:



然后我们只要将每个文件的路径找到,作为这个自定义函数的参数就可以了。



3、PowerQuery导入文件夹,获取每个文件的路径。


文件夹导入后,选中Name和FolderPath列,删除其他列,只保留这两列:



然后将这两列合并,就得到了每个文件的完整路径。



4、调用自定义函数,合并完成。


在第三步的基础上,调用第2步建好的自定义函数,将每个文件的完整路径作为参数。



然后展开数据,就直接得到了3个文件汇总并整理好的一维表。



以上就是利用自定义函数批量汇总的全部步骤,是不是也挺简单。


这种方法的优点如下:

  • 更加灵活:对于不能直接简单的合并的(如本文示例),也可以处理;

  • 速度更快:先对一个文件进行整理,然后再汇总,相比先汇总再整理,更节省时间,对于文件多、数据量大、以及需要较为复杂处理的合并尤为如此。


本文的练习数据,可以在「PowerBI星球」公众号对话框发送关键字“自定义函数量合并”下载。




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


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

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