如何用Power Query实现类似MSSQL GROUP BY的Excel表转换?
用Excel Power Query实现类似SQL GROUP BY的透视输出
你要的效果本质是按Attr1、Attr2分组,将Attr3的取值转为列名,对应填充Attr4的值,用Power Query的透视功能就能实现,不需要复杂的JOIN操作,具体实现方式如下:
一、图形化界面操作步骤
- 选中源数据区域,点击「数据」选项卡 → 「从表格/区域」(普通数据会自动转为Excel表,确认导入即可)
- 在Power Query编辑器中,选中
Attr3列,点击「转换」选项卡 → 「透视列」 - 在弹出的配置窗口中:
- 「值列」选择
Attr4 - 高级选项选择「不要聚合」(因为每个
Attr1+Attr2+Attr3组合对应唯一的Attr4值,无需聚合计算)
- 「值列」选择
- 确认后即可得到目标格式,缺失值会自动显示为
null
二、直接编写M代码实现
如果习惯用代码操作,导入数据后打开「高级编辑器」,替换现有代码为以下内容(注意把Table1换成你的源表名称):
let 源 = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], 生成透视表 = Table.Pivot(源, List.Distinct(源[Attr3]), "Attr3", "Attr4") in 生成透视表
代码说明:List.Distinct(源[Attr3])提取Attr3的所有唯一值作为新列名,Table.Pivot自动将Attr1、Attr2作为分组依据,完成透视转换
效果验证
用你提供的示例源数据执行操作后,会完全匹配期望的输出格式:
- Attr1、Attr2作为分组行保留
- Value1、Value2、Value3成为新列名
- 对应位置填充Attr4的值,没有匹配项的位置显示
null
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

