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

如何用Power Query处理合并单元格实现逆透视与透视

解决方案

步骤1:修复合并单元格的表头

导入数据后保留前两行表头(第一行是合并的分类标识,第二行是具体指标),先处理表头的null值与复合命名:

  • 选中第一行,点击转换选项卡 → 填充 → 向下填充,将第一行的null替换为对应的分类(AS/BT)。
  • 用M代码合并两行生成复合表头(比手动操作更精准):
    let
        Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
        // 提取前两行表头
        HeaderRows = Table.FirstN(Source, 2),
        // 转置后合并每行非空文本,再转置回原结构
        CombinedHeader = Table.Transpose(Table.TransformColumns(Table.Transpose(HeaderRows), {{"Column1", each Text.Combine(List.RemoveNulls(_), "_")}})),
        // 替换原表表头并跳过原表头行
        NewTable = Table.PromoteHeaders(Table.Combine({CombinedHeader, Table.Skip(Source, 2)}), [PromoteAllScalars=true])
    in
        NewTable
    
    处理后表头会变为区域,管理区域,区域,日期,AS_已使用,AS_可用,AS_预订率,AS_状态,BT_已使用,BT_可用,BT_预订率,BT_状态,便于后续拆分与筛选。

步骤2:删除冗余列

直接选中所有含预订率或状态的列,右键 → 删除,仅保留区域,管理区域,区域,日期,AS_已使用,AS_可用,BT_已使用,BT_可用。

步骤3:逆透视拆分分类与指标

  • 选中前4列(区域、管理区域、区域、日期),点击转换选项卡 → 逆透视列 → 逆透视其他列,生成属性和值两列。
  • 拆分属性列:选中该列,点击转换 → 拆分列 → 按分隔符,选择_作为分隔符,拆分为分类(AS/BT)和指标(已使用/可用)两列。
  • 将值列转为数值类型:右键值列 → 更改类型 → 整数(或小数,根据数据类型调整)。

步骤4:计算总计与可用率

  • 按区域,管理区域,区域,日期,分类分组并透视指标:选中分类列,点击转换 → 透视列,值列选值,属性列选指标,得到每个分组下的已使用和可用列。
  • 添加自定义列总计:点击添加列 → 自定义列,输入公式[已使用] + [可用]。
  • 添加自定义列可用率:输入公式[可用] / [总计],右键该列 → 格式化 → 百分比。

步骤5:合并位置列并透视日期

  • 合并前三个区域列为位置:点击添加列 → 自定义列,输入公式Text.Combine({[区域], [管理区域], [区域]}, " - "),随后删除原三个区域列。
  • 透视日期生成目标格式:选中日期列,点击转换 → 透视列,值列选值,属性列选总计,已使用,可用,可用率,最终会生成每个日期分组下的指标列,与需求格式匹配。

最后调整

加载数据到Excel后,可手动合并日期对应的表头单元格,调整列顺序使其更符合阅读习惯。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 18:16:02