使用Power Query批量提取合并多Excel文件固定区域数据的问题咨询
使用Power Query批量提取合并多Excel文件固定区域数据的问题咨询
嗨,我完全懂你现在的头疼点——上百个结构一模一样的Excel文件,每个都有前后没用的冗余行,只想提取中间固定的几行合并到一起,用Power Query的时候要么合并完没法单独清理每个文件的废行,要么单独处理一个文件又没法批量套用步骤,对吧?别慌,这其实是Power Query批量处理里很典型的场景,我给你一步步拆解怎么搞定:
第一步:先给单个文件做个处理模板
首先咱们先搞定单个文件的清理逻辑,把这个做成可复用的模板:
- 打开Excel,点击「数据」>「获取数据」>「自文件」>「自工作簿」,选其中一个示例Excel文件
- 进入Power Query编辑器后,直接定位到你要保留的行:
- 最简单的方式:点击「开始」选项卡>「保留行」>「保留特定范围的行」,输入起始行11、结束行12,直接精准保留有用数据
- 或者也可以先删前10行(「删除前几行」输入10),再删后面的8行(「删除后几行」输入8),效果一样
- 别忘了加个「来源文件名」列,方便最后溯源:点击「添加列」>「自定义列」,输入公式
=Source.Name(如果你的数据源名称不是Source,换成实际的就行,比如导航里的工作表名)
第二步:把单个文件的步骤转成自定义函数
这是批量处理的核心!把刚才的单个文件处理逻辑打包成函数,就能套用在所有文件上:
- 在Power Query编辑器左侧的「查询」面板里,找到你刚才处理单个文件的查询,右键点击它,选择「创建函数」,给函数起个好记的名字比如
ProcessExcelFile,确认后就生成了一个接收文件路径的函数,它会自动执行你刚才的所有清理步骤
第三步:批量导入所有文件并应用函数
现在就可以批量处理所有文件了:
- 回到Excel,点击「数据」>「获取数据」>「自文件」>「自文件夹」,选择存放所有Excel文件的文件夹
- 点击「转换数据」进入Power Query编辑器,这时候你会看到文件夹里所有文件的列表,包含「名称」「路径」等信息
- 点击「添加列」>「自定义列」,输入公式
=ProcessExcelFile([路径]),这时候每个文件都会自动套用你刚才的清理逻辑,提取出有用的行 - 最后点击自定义列标题旁边的「展开」按钮,把嵌套的表格展开成普通行,同时保留「名称」列(也就是文件名),这样就得到了你想要的结果:每个文件的有用行都按顺序合并,还能看到每行来自哪个文件
一些要注意的小细节
- 确保所有Excel文件的结构完全一致:比如总行数都是20行,有用数据都在11-12行,不然函数可能会出错
- 如果文件里有多个工作表,在第一步处理单个文件的时候,一定要在导航器里选好要处理的目标工作表,这样函数会自动套用这个选择
- 可以先拿3-5个测试文件试试流程,没问题再批量处理全部文件,避免出问题
备注:内容来源于stack exchange,提问作者Ankit




