You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Power Query实现:单文件合并两表后批量处理文件夹内所有文件

批量处理文件夹内Excel文件:先合并单文件两表再汇总

嘿,这个需求其实挺典型的——核心就是把单文件内的两表合并逻辑封装成自定义函数,再让Power Query用这个函数批量遍历文件夹里的所有文件。下面是具体的操作步骤,跟着来就行:

步骤1:创建“单文件两表合并”的自定义函数

  1. 先导入一个示例Excel文件到Power Query,完成你已经会的两表合并操作(比如按关键字段做内连接/左连接,选择需要的字段)。
  2. 合并完成后,点击Power Query编辑器顶部的高级编辑器,把现有代码改写成函数:
    • 开头加一行定义函数的代码:(Filepath as text) as table =>
    • 把代码里原本固定的文件路径(比如"C:\测试文件.xlsx")替换成参数Filepath
    • 确保代码最后返回的是合并后的表(通常是最后一步的变量名)
    • 举个简化版的函数示例:
      (Filepath as text) as table =>
      let
          // 导入Excel文件的所有表
          Source = Excel.Workbook(File.Contents(Filepath), null, true),
          // 获取第一张表(如果表名固定,也可以用表名,比如Source{[Name="表1"]}[Data])
          表1 = Source{0}[Data],
          // 获取第二张表
          表2 = Source{1}[Data],
          // 合并两张表(这里按"ID"字段做左连接,可根据你的需求调整)
          合并表 = Table.NestedJoin(表1, {"ID"}, 表2, {"ID"}, "表2", JoinKind.LeftOuter),
          // 展开合并后的字段(选择你需要的列)
          展开表 = Table.ExpandTableColumn(合并表, "表2", {"字段1", "字段2"}, {"表2_字段1", "表2_字段2"})
      in
          展开表
      
  3. 点击完成,把这个函数保存(比如命名为合并单文件两表)。

步骤2:导入文件夹内的所有文件列表

  1. 在Power Query中选择数据→获取数据→从文件→从文件夹,选择目标文件夹。
  2. 导入后会得到一张包含所有文件信息的表,重点保留「文件路径」列即可(其他列可以按需删除)。

步骤3:批量应用自定义函数并汇总

  1. 在文件夹表中,点击添加列→自定义列,输入公式:=合并单文件两表([文件路径]),然后确定。
  2. 此时自定义列里会显示每个文件对应的合并后表,点击列标题右侧的展开按钮(两个向右的箭头),选择需要展开的所有字段,确定后就会得到所有文件的汇总表。

关键注意事项

  • 确保所有目标Excel文件里的两张表结构一致(字段名、数据类型匹配),如果表名固定,函数里用表名索引更稳妥;如果表名不固定,用位置索引(比如Source{0}[Data]取第一张表)更灵活。
  • 如果遇到个别文件格式异常,可在函数里加错误处理逻辑,比如用try...otherwise跳过错误文件:
    (Filepath as text) as table =>
    let
        结果 = try
            // 原来的合并逻辑
        otherwise
            // 错误时返回空表或提示信息
            Table.FromRecords({[错误信息="文件处理失败: " & Filepath]})
    in
        结果
    

内容的提问来源于stack exchange,提问作者PeterLupo

火山引擎 最新活动