Power Query表格转置:列项数量不同时转置及两列值升序排列方法
表格转置相关问题解答
问题1:各列项目数量不同且内容无关时能否转置?
可以转置,但转置后会自动用空值填充长度不一致的部分。例如原表格列A有5行、列B有3行,转置后行A对应5个单元格,行B对应3个单元格加2个空值,所有行的长度会统一为原表格最长列的行数。
问题2:两列表格转置,将一列作为新列名,另一列值升序排列(空值置底)
问题背景
使用Power Query的Pivot选「Don't aggregate」时报错,选Count仅能统计数量;用Transpose加合并拆分操作导致数据重复,希望通过Power Query实现可一键刷新的解决方案。
实现步骤
- 添加索引列:在Power Query编辑器中,选中数据后点击「添加列」→「索引列」→「从0开始」。
- 分组打包数据:选中要作为新列名的列(例:「类别列」),点击「转换」→「分组依据」,设置:
- 新列名:
分组数据 - 操作:
所有行
完成后同一类别的所有值会被打包成嵌套表格。
- 新列名:
- 排序嵌套表格:添加自定义列,用M代码对嵌套表格的值列升序排序(空值自动排在底部):
替换Table.Sort([分组数据],{{"值列", Order.Ascending}})值列为你的实际值列名称,随后删除原「分组数据」列,将自定义列重命名为分组数据。 - 添加组内索引:展开「分组数据」列(仅保留值列),再次按「类别列」分组,在分组操作中添加组内索引:
展开后将得到每个类别下带索引的行。Table.AddIndexColumn([分组数据], "组内索引", 0, 1) - 透视生成目标表格:选中「组内索引」列,点击「转换」→「透视列」,值列选择实际值列,聚合函数选「Don't aggregate」,即可得到目标格式的表格——类别作为列名,值按升序排列、空值置于底部。
已有前置清洗步骤时的代码插入技巧
- 打开Power Query编辑器的「高级编辑器」,找到前置清洗后的最后一步,插入分组、排序相关的M代码;
- 或先通过「分组依据」工具生成基础分组代码,再手动修改添加排序和组内索引逻辑,确保与前置步骤衔接。
内容的提问来源于stack exchange,提问作者hosta
相关产品推荐
相关产品推荐

