如何在Power Query中通过配置表动态追加不同工作簿的表格
Power Query 基于配置表批量追加多工作簿Excel表实现方案
前置准备
- 在当前工作簿中创建名为
data_sources的正式表(List Object),表结构包含3列:Workbook location(工作簿存储文件夹路径)、Workbook name(工作簿文件名,含后缀)、Table name(工作簿内待合并的表名称) - 配置表示例如下:

后续新增待合并数据源时,仅需在该配置表中新增对应记录,无需调整Power Query代码。
实现代码
打开Power Query编辑器,新建空白查询,进入高级编辑器粘贴以下M代码,可根据实际业务需求调整最后一步的行过滤规则:
let Source = Excel.CurrentWorkbook(){[Name="data_sources"]}[Content], #"Changed Type" = Table.TransformColumnTypes(Source,{{"Workbook location", type text}, {"Workbook name", type text}, {"Table name", type text}}), // 按配置逐行拉取对应位置的Excel表数据 #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each Excel.Workbook(File.Contents([Workbook location]&[Workbook name])){[Item=[Table name],Kind="Table"]}[Data]), // 批量追加所有表,自动识别所有源表的列,兼容源表后续新增字段 #"Combine" = Table.Combine(#"Added Custom"[Custom]), // 示例过滤规则:剔除Client字段为空的行,可按需修改 #"Filtered Rows" = Table.SelectRows(#"Combine", each [Client] <> null and [Client] <> "") in #"Filtered Rows"
注:原示例代码存在步骤名引用错误,已修正
#"Filtered Rows"步骤中对合并步骤的引用,避免运行时报错。
核心特性
- 全配置化维护数据源,无需逐个手动加载工作簿、手动执行追加操作
- 合并逻辑自动适配源表结构变动:任意源表新增/调整列,刷新查询后结果会自动同步变更,无需修改M代码
- 按表名精准读取数据,不受源工作簿内工作表顺序、表位置变动影响
内容的提问来源于stack exchange,提问作者SuavestArt
相关产品推荐
相关产品推荐

