Excel Power Query如何对名值列对执行无聚合转置/透视操作
Power Query 长表转宽表操作方案
操作步骤(界面化操作,无需复杂代码)
- 先添加索引列:点击「添加列」选项卡 →「索引列」→ 选择「从1开始」,给每行加唯一行号
- 生成分组ID:
- 选中
Name列,筛选值为name的行(每个度量项的第一行都是name属性,作为分组起始标记) - 右键点击新增的索引列,选择「填充」→「向下」,同一个度量项的所有行就会被分配到同一个ID下
- 取消
Name列的筛选,恢复全表数据
- 选中
- 执行透视操作:
- 选中
Name列,点击「转换」选项卡 →「透视列」 - 值列选择
Value,聚合函数选项选择「不要聚合」,确认后即可生成宽表结构
- 选中
- 收尾调整:删除临时新增的索引列、分组ID列,调整列名(比如修正原数据拼写错误的
svmbol为Symbol)、调整列顺序即可得到目标表
快速实现代码(可选)
如果希望直接通过代码实现,打开「高级编辑器」,把以下代码中的源替换为你自己的上一步查询步骤名称即可:
let 源 = 替换为你自己的源表步骤, 新增索引 = Table.AddIndexColumn(源, "索引", 1, 1, Int64.Type), 生成分组标记 = Table.AddColumn(新增索引, "分组ID", each if [Name] = "name" then [索引] else null, type number), 向下填充分组ID = Table.FillDown(生成分组标记,{"分组ID"}), 透视属性列 = Table.Pivot(向下填充分组ID, List.Distinct(向下填充分组ID[Name]), "Name", "Value"), 清理临时列 = Table.RemoveColumns(透视属性列,{"索引", "分组ID"}) in 清理临时列
该方案兼容每个度量项属性数量3-5个浮动的场景,只要每个度量项都以name属性作为首行即可正常运行。
内容的提问来源于stack exchange,提问作者Incans
相关产品推荐
相关产品推荐

