截至目前,小鱼已经和大家学习了 Power Query 合并工作簿中的多张工作表,本节我们需要合并的数据则位于多个工作簿中,小鱼将使用 Power Query 编辑器中的自定义列来实现多工作簿的合并!
1. 从文件夹获取数据
首先,我们将包含了各门店订单的 Excel 工作簿放在一个独立的文件夹中:
在文件夹外侧,创建一个总表,用于存放合并后的订单数据:
打开创建的数据总表工作簿,在【数据】菜单栏的【获取数据】选项中选择【来自文件 - 从文件夹】,以导入文件夹中文件的元数据信息和链接。
如下,等待 Excel 读取到文件夹中所有工作簿的细信息后,会弹出如下所示的窗口:
该窗口包含了所有文件的元数据信息和文件内容,其中 Content 列为文件内容,以二进制格式存储。由于我们需要取出的是工作簿中的内容而不是元数据信息,因此这里我们点击【转换数据】,进入 Power Query 编辑器。
由于我们仅需要获取工作簿中的内容,无需其他信息。点击 Content 列将其选中,点击【删除列 - 删除其他列】选项。
2. 添加自定义列合并数据
接下来我们就需要用到添加【自定义列】的功能,将工作簿中的工作表内容取出来。点击【添加列】菜单,选择【自定义列】选项。
在弹出的【自定义列】窗口中,我们需要录入 Power BI 的公式,来读取 Content 工作簿对象的工作表:
Excel.Workbook([Content],true)
其中第一个参数为存储工作簿内容的列,第二个参数为 true
表示数据包含标题。公式输入完成后,会自动进行语法检测,检测结果在窗口的左下角。
注:【自定义列】窗口中允许我们为自定义的列定义【新列名】。
点击确定,我们就在查询结果中增加了一列叫做【自定义】的列,其内容为工作表。
点击自定义列右上角的图标,我们可以看到工作表的属性信息,点击取消勾选【选择所有列】,仅勾选【Data】列,也就是数据表中的数据部分。
现在,【自定义】列字段就变成了【自定义·Data】字段,再次展开字段属性,我们就可以看到 Data 中包含的列名了,点击勾选【选择所有列】导入所有字段。
至此,我们就可以在 Power Query 编辑器中看到所有我们需要的数据了。接下来,我们删除存储工作簿内容的 Content 列。
最后一步操作,将查询结果上载到我们创建好的总表即可。点击【主页】中的【关闭并上载至】选项。
在弹出的导入数据窗口中,可再次数据放置位置,此处的显示方式我们选择【表】。
导入结果如下:
以上就是今天关于 Power Query 合并多工作簿的全部内容啦~下面,小鱼对本节内容加以总结。
总结
在使用 Power Query 合并多工作簿分为两个步骤:从文件夹获取数据以及添加自定义列以获取合并的数据。
在获取数据前,需要我们把所有分表放在同一个文件夹,再创建一个存放汇总数据的总表,总表不能与分表放在一起。通过 Power Query 编辑器从文件夹获取到工作簿的相关属性后,仅保留 Content 列即可。
上述获取的 Content 列仅仅是工作簿的内容,通过 Excel.Workbook 函数可以获取工作簿中的工作表属性,进而获取工作表的 Data 属性,此过程中需要经过两次展开获取最终的订单数据。
因此,Excel 管理数据是分层的,其层级关系为:文件夹 - 工作簿 - 工作表 - 数据记录。