You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Power Query中动态批量合并多组列(无需硬编码列名)

Power Query批量合并员工出勤列(动态适配员工变动)

核心实现逻辑

用List.Accumulate遍历你已有的List_of_Pairs,对每一组列对执行合并操作,同时动态生成带员工首字母的列名,无需手动修改适配员工变动。

具体M代码

假设重排后的表格是Custom1,替换原有单个合并列的步骤,直接用以下代码:

= List.Accumulate(
    List_of_Pairs,
    Custom1,
    (currentTable, columnPair) => 
        let
            // 提取员工首字母(列对的第一个元素)
            empInitial = Text.From(columnPair{0}),
            // 动态生成要合并的两列名
            colsToCombine = {empInitial, "Patterns." & empInitial},
            // 合并列并设置有意义的新列名
            mergedTable = Table.CombineColumns(
                currentTable,
                colsToCombine,
                Combiner.CombineTextByDelimiter(" ", QuoteStyle.None),
                empInitial & "_出勤状态" // 可自定义后缀,比如直接用empInitial也可
            )
        in
            mergedTable

代码说明

  • List.Accumulate:按顺序遍历List_of_Pairs里的每一组列对,逐步完成批量合并操作
  • empInitial = Text.From(columnPair{0}):从列对中提取员工首字母,确保格式为文本
  • colsToCombine:自动生成当前要合并的两列名称(员工首字母列 + Patterns.首字母列)
  • 新列名empInitial & "_出勤状态":直接关联员工首字母,替代默认的"MMK.1"这类无意义命名,清晰对应到具体员工

注意事项

  • 确保List_of_Pairs里的元素是文本格式的列名,比如{"MMK", "Patterns.MMK"},而非直接引用列对象,否则Text.From会报错
  • 如果不需要后缀,直接将新列名设为empInitial,合并后原两列会被自动删除,新列直接替代原员工首字母列

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 16:28:34