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

Power Query中批量重命名无年份quantities列的简化M代码问询

简洁M代码实现带年份的quantities列重命名

核心思路

遍历列名列表时维护一个年份跟踪变量:遇到带年份的sales列就提取并更新年份,遇到quantities列直接用最近记录的年份拼接新列名,一步完成列名匹配与重命名。

完整M代码示例

let
    // 替换为你的实际数据源步骤名称
    Source = YourDataTable,
    // 获取所有列名列表
    ColumnNames = Table.ColumnNames(Source),
    // 遍历列名生成新名称,同时跟踪最近年份
    NewColumnNames = List.Accumulate(ColumnNames, [Names = {}, LastYear = null], (state, currentName) =>
        let
            // 提取列名中的4位年份(兼容带年份的sales列格式)
            ExtractedYear = try Text.Matches(currentName, "\d{4}"){0} otherwise state[LastYear],
            // 生成新列名:quantities列拼接年份,其余保留原名
            UpdatedName = if currentName = "quantities" then "quantities " & ExtractedYear else currentName
        in
            [Names = state[Names] & {UpdatedName}, LastYear = ExtractedYear]
    )[Names],
    // 批量重命名表列
    RenamedColumns = Table.RenameColumns(Source, List.Zip({ColumnNames, NewColumnNames}))
in
    RenamedColumns

代码说明

  • List.Accumulate实现一次遍历完成状态维护与列名生成,避免拆分列表、处理索引的繁琐操作
  • Text.Matches(currentName, "\d{4}")用正则匹配提取4位年份,适配sales 2010这类带年份的列名格式
  • 自动关联前一列的年份:遇到sales列更新年份变量,后续的quantities列直接复用该年份

使用步骤

  1. 将代码中的YourDataTable替换为你Power Query中实际的数据源步骤名称
  2. 把这段代码粘贴到高级编辑器中,替换原有的重命名相关步骤即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 14:30:55