在我们实际工作中,经常会碰到这样的问题,比如有相同结构的数据表,有多人来完成,最后把每个人完成的数据表汇总到一张表。或者,我们每年做一个数据文件,最后把各年的数据文件汇总到一张表。此类问题,原来都用VBA或者SQL语句来解决,复杂的编程语句总是让大家看着吃力又难记。现在好啦,我们只需要点击鼠标即可完成,这就是Power BI系列中的Power Query,因为简单高效,更加得到大家的青睐。OK,今天就给大家分享使用Power Query来解决这个问题。准备工作

在使用之前,首先要看看你的Excel版本,在Excel2016版本中,微软已经把Power Query嵌入到Excel中,所以安装了Excel2016版的小伙伴们可以直接使用Power Query功能。使用Excel2010或Excel2013版的小伙伴们也不用担心,可以在官网下载Power Query插件,安装后就可以使用了。

网址如下:

https://www.microsoft.com/zh-CN/download/details.aspx?id=39379 根据自己电脑上Office 是32位还是64位来选择相应的Power Query下载安装。

多张表mysqldump_自定义

插件安装完成后就可以看到Excel中多出一个Power Query选项卡:


多张表mysqldump_自定义_02

而Excel2016版不需要安装插件,在“数据”选项卡下可以看到功能区上有“获取和转换/新建查询”功能,和Power Query插件显示界面稍有不同,但是功能一样。


多张表mysqldump_自定义_03

把以上工作准备就绪,我们就可以使用Power Query来汇总文件了。

汇总文件

假设我们有一个订单文件夹,里面有三年的订单,如图所示:



多张表mysqldump_数据_04

现在,把这三年的订单汇总到一张工作表中。

这里,用Excel2016版来给大家演示。 新建一个工作薄,分别单击“数据/新建查询/从文件/从文件夹”。

多张表mysqldump_从一张表里选择一列加入到另一张表_05

浏览找到“订单”文件夹。


多张表mysqldump_多张表mysqldump_06

“确定”后,即可进入“查询编辑器”。

从字段"Name"下我们可以看到三年的订单文件已经调入:

多张表mysqldump_自定义_07

不过,"Content"字段下显示的是"Binary", 即二进制数据。二进制数据不能直接提取,所以我们还需要添加一个自定义列,写一条公式。

单击“添加列/添加自定义列”:

多张表mysqldump_数据_08

在【添加自定义列】对话框中,【自定义列公式】处输入:

=Excel.Workbook([Content],true)

多张表mysqldump_自定义_09

注意:

函数 Excel.Workbook,首字母要大写;

第一个参数Content 是需转换的二进制字段名称,不用手动输入,可双击右侧“可用列”中的Content添加;

第二个参数True, 逻辑值,表示原数据有标题行。

确定后,可看到多出一列"Custom", 数据类型是"Table":


多张表mysqldump_从一张表里选择一列加入到另一张表_10

单击"Custom"右侧的展开按钮,选择“扩展”,取消“使用原始列名作为前缀”对勾,按“确定”。


多张表mysqldump_多张表mysqldump_11

扩展后多出几列:


多张表mysqldump_Power_12

"Data"字段下显示类型还是"Table",我们需要把"Table"再扩展。单击"Data"右侧的展开按钮,选择“扩展”,依然取消“使用原始列名作为前缀”,按“确定”。


多张表mysqldump_数据_13

这样,文件夹中三年的订单已经合并到一起了。


整理数据

将合并后的订单进行整理。

删除不需要的列,结果如下:

多张表mysqldump_多张表mysqldump_14

再把数据类型转换一下,特别是“订单日期”数据类型要选择“日期”。


多张表mysqldump_多张表mysqldump_15

上载数据 最后将整理好的数据上载到Excel。


单击“开始/关闭并上载”。

多张表mysqldump_数据_16

上载到Excel后,我们得到如下合并的数据表:


多张表mysqldump_自定义_17

这个合并的数据表,是一个“查询”表,原文件夹下的数据更改了,只要“刷新”一下这个数据表,所有数据将随之更新。

是不是简单又高效?在这里使用Power Query真的比用VBA和SQL语句要简单很多呢!

好啦,将Excel多个文件汇总到一张表,今天就给大家分享到这儿了,希望小伙伴们都能Get到。