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列直接复用该年份
使用步骤
- 将代码中的
YourDataTable替换为你Power Query中实际的数据源步骤名称 - 把这段代码粘贴到高级编辑器中,替换原有的重命名相关步骤即可
内容的提问来源于stack exchange,提问作者Agourn
相关产品推荐
相关产品推荐

