关于批量合并Excel,以前分别介绍过各种情况下的不同处理方式,比如:

  • 利用PowerQuery,批量合并多个Excel的指定列
  • 批量合并Excel,数据不是从第一行开始
  • 批量合并Excel,前面有空行且不相等的解决办法

最近星友又问到一种情况,如果多个表的内容相似,但是列顺序不一致、并且列的名称也不一致,就像下面这三个表格,如何批量合并呢?

列顺序不一致很容易解决,前面已经介绍过,但是列名也不一致就比较麻烦,系统无法识别两个不同名称的列是否应该合并到一起。

对于这种情况,基本思路是先整理一个列名映射表,将每个表修改为统一的列名,然后再进行合并。批量修改列名的方法之前也介绍过,请参考:

PowerQuery技巧:批量更改列名

对于上述示例数据的列名映射表如下:

然后就是将批量修改列名和批量合并两种技巧结合起来就可以了,操作步骤如下。

1. 导入列名映射表并转为List。

参考批量更改列名的操作步骤,将列名映射表转换为List列表,如下。


2. 导入Excel工作簿所在的文件夹

参考批量合并Excel指定列的步骤,将文件夹的工作簿导入,并利用Excel.Workbook([Content],true)解析出数据,到达下面这个步骤。

如果在这里直接展开[Data]列的数据,由于列名不一致,合并的结果将是错乱的,因此这里先不要展开。


3. 批量修改[Data]列中Table的列名

这个是最关键的一步,在第2步的基础上添加自定义列来修改未展开的Table的列名:

Table.RenameColumns(

[Data],

列名映射表,

MissingField.Ignore

)



至此每个Table中列名就是统一的了,点击展开,选择需要的列就可以得到合并后的数据。

批量合并数据的关键是要先熟悉自己的数据,如果数据很规范,合并起来就非常轻松,但是碰到如本文的情况,列名都不统一,那就需要先花点时间,动手整理好列名映射表,然后再进行合并。


更多PowerBI教程


采悟 PowerBI星球