如何使用Power Query动态汇总文件夹下多个Excel文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Power Query动态汇总文件夹下多个Excel文件相关的知识,希望对你有一定的参考价值。

通过使用Power Query里的追加查询功能,我们可以快速合并多个excel文件。但是如果文件数量大的话,第一次建立查询时的手工操作步骤会比较多。今天,我们给大家分享如何通过Power Query动态合并同一文件夹下的多个Excel文件。

假设我们有各省分公司提交上的28份交易数据,且这些数据结构相同。

我们用Excel2016进行演示。点击“数据”– “从文件”– 从“文件夹”。

选择数据所在的文件夹,并点击“确定”。

所有Excel文件的信息被加载进来了。在这里,我们只需要保留”Content”列– 选择“Content”列,并点击“开始” – ”删除其他列“。

点击“添加列“– ”添加自定义列“,输入Excel.Workbook([Content],true),通过Excel.Workbook把Content 里的内容提取出来。

这里大家注意Excel.Workbook()的第二个参数,我们通过指定True,实现了默认情况下将第一行作为标题,省去了后面提升和筛选标题行的操作。

看一下Excel.Workbook()的参数要求:

第一个参数是我们要查询的Excel工作薄

第二个参数为可选参数,通过使用true,可以指定数据使用第一行做为标题。

继续我们的案例......

点击新建的Custom列右侧的扩展按钮,把所有字段扩展出来。

选中Custom.Data列,然后“删除其他列“。

点选Custom.Data的扩展按钮,将数据扩展出来。

点击确定后即可得到最终的汇总结果。我们选择将数据加载到表,查看最终的合并结果。

所有省份的数据均已正确合并到一起。

通过使用此方法,我们可以快速对同一文件夹下的同结构Excel进行合并。而且Power Query已经记录下我们的操作步骤,将来数据更新后我们只需要点击“刷新”即可获得最新数据合并结果,一劳永逸。

不仅如此,如果此文件夹下新增了其他省份的文件,Power Query也会自动把数据合并进来。我们增加3个省份的数据进来。

只需刷新Power Query即可得到最新的合并数据,是不是非常简单实用?

参考技术A Sub CombineWorkbooks()
Dim FilesToOpen, ft
Dim x As Integer
Application.ScreenUpdating = False
On Error GoTo errhandler
FilesToOpen = Application.GetOpenFilename _
(FileFilter:="Micrsofe Excel文件(*.xls;*.xlsx), *.xls;*.xlsx", _
MultiSelect:=True, Title:="要合并的文件")
If TypeName(FilesToOpen) = "boolean" Then MsgBox ("没有选定文件"): Exit Sub
x = 1: k = 1
Do While x <= UBound(FilesToOpen)
Set wk = Workbooks.Open(Filename:=FilesToOpen(x))
If k = 1 Then
wk.SaveAs wk.Path & "\统计表.xls"
ttlwk = ActiveWorkbook.Name
k = 0
Else
wrow = wk.Sheets(1).Range("b65536").End(3).Row
trow = Workbooks(ttlwk).Sheets(1).Range("b65536").End(3).Row
wk.Sheets(1).Range(Cells(7, 2), Cells(wrow, 7)).Copy Workbooks(ttlwk).Sheets(1).Cells(trow, 2)
wk.Close False
x = x + 1
End If
Loop
MsgBox ("合并成功完成!")
Application.ScreenUpdating = True
errhandler:
End Sub本回答被提问者采纳

以上是关于如何使用Power Query动态汇总文件夹下多个Excel文件的主要内容,如果未能解决你的问题,请参考以下文章

power query插件应用案例(二)

Power Query 同一文件夹多工作簿合并

power query展开表时动态获取要展开的列

如何从 Power Query 的不同表中的 2 列中获取数据以汇总为 1 列?

Power Query 表结果与接收器上的动态名称

Power BI:如何在 Power Query 编辑器中将 Python 与多个表一起使用?