02.27 自动合并Excel工作簿并提取指定内容作为唯一标识

我们工作中可能会遇到类似这样的电子表格:最前面几行表明该表的关键信息,例如这份虚拟的电子装箱单有收货方、地址、预计到货日期等等;表头下方是明细内容,本次发货有几箱,每箱装了什么产品,产品数量多少(每箱重量信息也应该包含,此处省略)。

自动合并Excel工作簿并提取指定内容作为唯一标识


一个需求是,要把某一时段发往各店的商品做个汇总统计,生成如下结果。除了包含明细,还应新增列说明这是哪个店的商品,预计什么时候到货。本文尝试使用Power Query做一份自动化的模板。

自动合并Excel工作簿并提取指定内容作为唯一标识


1.数据导入


将数据源统一放在一个文件夹,在Excel或者Power BI中选择从该文件夹导入数据(Excel 2013在Power Query模块,2016及以上版本在“数据”选项卡下,Power BI在“主页”选项卡“获取数据”。)导入后的结果在Power Query中如下图所示。

自动合并Excel工作簿并提取指定内容作为唯一标识

单击Content右侧的按钮,系统自动进行处理,生成两部分内容。一部分是自定义函数,对样表进行处理;另外一部分是调用自定义函数合并的所有文件,如下图所示。

自动合并Excel工作簿并提取指定内容作为唯一标识

这样直接合并后的结果无法使用,除了冗余空行之外,收货方、预计到货日期也不在我们指定的位置,所以要对示例文件进行处理。

2.示例文件数据处理


首先将1-5行全部删掉,然后将第一行用作标题,数据变为非常整洁的样式。

自动合并Excel工作簿并提取指定内容作为唯一标识

删除前5行


自动合并Excel工作簿并提取指定内容作为唯一标识

将第一行用作标题


一个新的问题产生,这张表没有收货方标识列,合并后会所有产品混到一起。这个问题通过添加自定义列解决:

<code>=原始样式[Column2]{1}/<code>
自动合并Excel工作簿并提取指定内容作为唯一标识


这个公式看着莫名其妙,并且我们知道在前面的步骤已经把收货方等表头删除了,这里为什么还可以得出正确的结果?

这是因为Power Query记录了每个步骤的操作结果,并且这些结果都可以后续调用。返回到“原始样式”这一步骤,可以看到当时“收货方”这一行还在。它在第二列的第二行,所以上述公式的含义为:

返回原始样式这一步骤生成的表的第二列第二行的值。{1}表示索引的第二位置,{0}是开端。

自动合并Excel工作簿并提取指定内容作为唯一标识


同理,再次添加自定义列,可以得到样表中的预计到货日期:

<code>=原始样式[Column2]{3}/<code>


3.修改汇总结果


基于前面我们对样例步骤进行了修改,汇总的“数据源”查询会报错,删掉“调用自定义函数”后面的所有步骤,重新展开表即可得到正确的汇总结果。

自动合并Excel工作簿并提取指定内容作为唯一标识


分享到:


相關文章: