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

PowerQuery无需拆分表格:自动合并月度数据并添加日期列

解决步骤

1. 导入数据并添加索引列

  • 将原始数据导入PowerQuery后,在「添加列」选项卡点击「索引列」,选择「从1开始」。这列用来标记每行位置,方便区分日期/设施/单位/数据行。

2. 标记行类型与分组

  • 添加自定义列组号,公式:Number.RoundDown(([索引]-1)/4)。该公式会把每4行划分为一组(如索引1-4为组0,5-8为组1,以此类推)。
  • 再添加自定义列行类型,公式:([索引]-1) mod 4,用数字标记每行类型:
    • 0 = 日期行
    • 1 = 设施行
    • 2 = 单位行
    • 3 = 数据行

3. 提取每组对应日期

  • 筛选出行类型=0的所有日期行,仅保留「组号」和存储日期的列(假设为Column1),将日期列重命名为对应日期。
  • 返回包含索引、组号、行类型的主表,点击「合并查询」,选择刚才生成的日期表,以「组号」为匹配条件合并,最后展开对应日期列。

4. 筛选数据行并清理格式

  • 筛选行类型=3的所有数据行,删除索引、组号、行类型这些辅助列。
  • 重命名数据列:选中目标列右键选择「重命名」,或在「转换」选项卡批量修改。若列名需从单位行提取,可重复步骤3的逻辑提取对应内容作为列名。

5. 批量处理多月份数据

  • 若12个月数据为多个独立文件,直接通过「获取数据」→「文件夹」导入所有文件,上述处理步骤会自动应用到所有文件,无需逐个拆分。

M代码示例(可直接替换数据源后使用)

let
    // 替换为你的数据源(如Excel表、CSV路径等)
    源 = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    // 添加从1开始的索引列
    添加索引 = Table.AddIndexColumn(源, "索引", 1, 1, Int64.Type),
    // 生成组号与行类型标记
    添加组号 = Table.AddColumn(添加索引, "组号", each Number.RoundDown(([索引]-1)/4), Int64.Type),
    添加行类型 = Table.AddColumn(添加组号, "行类型", each ([索引]-1) mod 4, Int64.Type),
    // 提取日期行并整理
    日期行筛选 = Table.SelectRows(添加行类型, each ([行类型] = 0)),
    日期表 = Table.RenameColumns(Table.SelectColumns(日期行筛选, {"组号", "Column1"}), {{"Column1", "对应日期"}}),
    // 将日期合并到主表
    合并日期 = Table.NestedJoin(添加行类型, {"组号"}, 日期表, {"组号"}, "日期表", JoinKind.LeftOuter),
    展开日期列 = Table.ExpandTableColumn(合并日期, "日期表", {"对应日期"}, {"对应日期"}),
    // 筛选数据行并清理
    筛选有效数据 = Table.SelectRows(展开日期列, each ([行类型] = 3)),
    清理与重命名 = Table.RenameColumns(Table.RemoveColumns(筛选有效数据, {"索引", "组号", "行类型"}), {{"Column2", "设备A数值"}, {"Column3", "设备B数值"}})
in
    清理与重命名

注意事项

  • 若日期不在第一列,替换代码中的Column1为实际日期列名。
  • 若每组行数不是固定4行,调整公式中的数字4为实际每组行数。
  • 重命名列时,根据你的实际数据列修改{"Column2", "设备A数值"}这类映射关系。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 14:47:40