基于PowerQuery M语言实现多表头行的批量逆透视
解决多行表头逆透视并保留表头为新列的方案
不用写自定义M代码,用Power Query内置可视化操作就能搞定,步骤如下:
假设你的原表格结构为:
第一行:Version(Actuals、Plan等)
第二行:Year(FY20、FY21等)
第三行:Date(具体日期)
第四行及以后:Country、Owner和对应数据列
步骤1:导入数据并设置复合表头
- 将数据导入Power Query(Excel中选「数据」→「从表格/区域」,勾选「我的表格有标题」后进入编辑器)。
- 选中前3行(点击行号1,按住Shift点击行号3),右键→「将行作为标题」→「将多行作为标题」。此时每列标题会变成
Actuals|FY20|2020/01/01这类复合格式(默认分隔符为竖线)。
步骤2:逆透视非标识列
- 选中
Country和Owner列(按住Ctrl点击列名),右键→「逆透视其他列」。操作后会生成Attribute(复合表头内容)和Value(对应数据值)两列。
步骤3:拆分复合表头为独立列
- 选中
Attribute列,点击「转换」选项卡→「拆分列」→「按分隔符」。 - 选择分隔符为「竖线」,选择「拆分为列」后确定。此时
Attribute会拆分为3个新列,将它们重命名为Version、Year、Date。
步骤4:整理数据类型
- 点击
Value列名旁的类型图标,设置为「小数」或「整数」;点击Date列的类型图标,设置为「日期」类型。
最终调整
- 调整列顺序为
Country、Owner、Version、Year、Date、Value,删除冗余列(如果有)。 - 关闭Power Query编辑器,加载数据即可得到目标结构。
如果你的表头行数不是3行,只需对应调整「将多行作为标题」的选中行数即可,核心逻辑是先合并多行表头为复合列名,再逆透视,最后拆分复合列名。
内容的提问来源于stack exchange,提问作者Martim On Fire
相关产品推荐
相关产品推荐

