如何通过Power Query从列数不同的多工作簿提取指定列合并?
用Power Query批量提取多工作簿指定列并追加合并
操作步骤:
导入文件夹下所有工作簿
- 打开Excel,切换到「数据」选项卡,依次点击「获取数据」→「从文件」→「从文件夹」
- 选中存放Book1、Book2、Book3的文件夹,点击「确定」
- 在弹出的文件夹内容页面,点击「转换数据」进入Power Query编辑器
创建提取指定列的自定义函数
- 点击「主页」→「新建源」→「空白查询」,把这个查询重命名为
GetSpecifiedColumns - 打开「高级编辑器」,替换原有代码为以下内容:
let Source = (FilePath as text) => let ImportData = Excel.Workbook(File.Contents(FilePath), null, true), SheetData = ImportData{[Item="Sheet1",Kind="Sheet"]}[Data], // 数据在Sheet1就用这个,其他表名改这里 PromoteHeaders = Table.PromoteHeaders(SheetData, [PromoteAllScalars=true]), KeepColumns = Table.SelectColumns(PromoteHeaders, {"Date", "Ref1", "Ref3"}, MissingField.Ignore) in KeepColumns in Source - 注:
MissingField.Ignore会自动跳过没有指定列的工作簿,不会报错
- 点击「主页」→「新建源」→「空白查询」,把这个查询重命名为
给所有工作簿应用自定义函数
- 返回文件夹内容的查询页面,点击「添加列」→「自定义列」
- 输入公式:
=GetSpecifiedColumns([Folder Path]&[Name]),点击「确定」 - 点击自定义列右侧的展开图标,选择「加载到」→ 只勾选「表」,确认展开
整理并加载合并后的数据
- 此时所有工作簿的
Date、Ref1、Ref3列已经被合并到一张表里,可按需做数据清洗(比如处理空值、统一日期格式) - 点击「主页」→「关闭并上载」,把合并好的数据导入到新工作表
- 此时所有工作簿的
内容的提问来源于stack exchange,提问作者Srikanth
相关产品推荐
相关产品推荐

