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

Power Query按指定数值复制列并添加索引的需求

用Power Query实现按指定数量复制列并添加索引

示例原始数据

假设你的表格结构如下(最后一行为各列需要复制的数量):

列A列B列C
值A值B值C
324

操作步骤

  • 把表格导入Power Query:选中表格,点击「数据」选项卡 → 「从表格/区域」
  • 分离数据行与数量行:假设数量行是最后一行,执行以下M代码片段拆分数据:
    // 获取总行数
    totalRows = Table.RowCount(Source),
    // 提取数量行(最后一行)
    countRow = Table.Last(Source),
    // 提取数据行(除最后一行外的所有行)
    dataRows = Table.RemoveLastN(Source, 1)
    
  • 按数量复制列并添加索引:遍历每一列,根据数量行的数值生成带索引后缀的重复列:
    // 遍历所有列生成复制后的列集合
    transformedColumns = List.Transform(Table.ColumnNames(dataRows), (colName) =>
        let
            // 获取当前列的复制次数
            copyCount = countRow[colName],
            // 生成带索引的列名和对应值
            copiedCols = List.Generate(
                () => [Index=1, ColName=colName & "_" & Text.From(1), Value=dataRows[colName]{0}],
                each [Index] <= copyCount,
                each [Index=[Index]+1, ColName=colName & "_" & Text.From([Index]), Value=dataRows[colName]{0}],
                each [ColName, Value]
            ),
            // 转成表格格式
            colTable = Table.FromRecords(copiedCols)
        in
            colTable
    ),
    // 合并所有生成的表格
    finalTable = Table.Combine(transformedColumns)
    
  • 加载结果:点击「关闭并上载」,即可得到目标表格。

适配说明

  • 如果数量行不是最后一行,将Table.Last(Source)替换为Table.Rows(Source){n}(n为目标行的索引,从0开始计数)
  • 如果原始表格有多行数据,需要修改dataRows[colName]{0}部分,添加嵌套循环实现每行数据的批量复制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 05:12:06