PowerBI将不同的excel文件的不同名的sheet汇总到一张表

2020-05-07 17:47:36 浏览数 (3)

工作中经常会遇到收集各个分公司的表然后汇总到一张表的情况,PowerBI或powerquery中的”从文件夹获取数据“提供了很大的便利。

不过,前提是所有文件的sheet名是相同的。如果sheet名不同,你可能需要学习一些骚操作。

以下是示例文件:

选择从文件夹中获取数据:

合并并加载,以第一个文件为示例文件:

不过,由于我的每个文件中的sheet名是不同的,所以出来一行错误:”该键与表中的任何行均不匹配“:

TIPS:

关于为什么会出现这个错误,我曾写过一篇文章专门介绍过:

整理你的报告从使用SQL开始

因为其它excel表中并没有示例文件中的“year2000”这个sheet名,所以会出现错误。

那如何解决呢?

解决办法1:

在上面这篇文章中也讲过,我们可以直接用0来表示第一行,第一行代表着第一个sheet,顺序是不会变的:

因此,我们打开转换示例文件,导航:

将这里的[Item="year2000",Kind="Sheet"]改成0

这样我们就将所有的excel文件中的第一个sheet导入进来了:

需要注意的是:

前文说的也很清楚,0代表第一个sheet,也就是说必须保证想要汇总的数据都在第一个sheet里(sheet名可以随意)。

但是如果待汇总的excel文件中,各个sheet的顺序是乱的(实际工作场景中经常发生),那么这种方式就不行了。

不过,如果sheet名有一定的规律,那么还是有办法解决的。

解决办法2:

通过筛选sheet名的方式。比如我们的示例文件中,我们想要获取的sheet名规则是”year20xx“,那么我们就可以以开头为”year“去筛选这些表,然后再将序号是0的表展开。

在转换示例文件中,进行修改:

也能得到正确的结果。

结论

PowerQuery给了我们很多便捷的方法汇总文件,这些方法要比手动或者使用VBA节省更多的时间。

然而默认的设置总是生硬的,限制条件很大,实际业务场景往往比预置环境复杂。

好在PowerQuery每一步都提供了详细的M代码支撑,通过适当修改代码,就可以实现不同的汇总方式。

0 人点赞