如何在Power Query中将四列表格转换为单行多列结构化数据
Power Query 表格结构转换实现方法
需求说明
原始表格为多行多列的分组键值对结构(每行包含两组键值:Column1/Column2为一组,Column3/Column4为一组),需转换为以键为列名、对应值为单元格内容的扁平单行表格。
方法一:图形界面分步操作
- 导入数据到Power Query:在Excel中选中原始表格,点击「数据」→「从表格/区域」,进入Power Query编辑器。
- 处理前两列的键值对:
- 选中
Column1和Column2,点击「转换」选项卡→「转置」。 - 转置后选中第一行,点击「转换」→「将第一行用作标题」,得到包含
Work Order Number、Work Order Title、Sector列的单行表格,将此查询重命名为「表1」。
- 选中
- 处理后两列的键值对:
- 返回原始查询,选中
Column3和Column 4,重复步骤2的转置和设标题操作,得到包含Total Fee、Remaining Fee、Last Review列的单行表格,重命名为「表2」。
- 返回原始查询,选中
- 合并两个表格:
- 点击「主页」→「合并查询」→「合并为新查询」,选择「表1」和「表2」,合并类型选「仅使用第一个表的行」,点击确定。
- 在新查询中展开合并列的所有字段,即可得到目标结构的表格。
方法二:M代码一键处理
若要高效完成转换,可直接在Power Query的「高级编辑器」中替换以下代码(注意将Table1替换为你的原始表格名称):
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], // 提取前两列并转成键值表头 LeftTable = Table.PromoteHeaders(Table.Transpose(Table.SelectColumns(Source,{"Column1", "Column2"})), [PromoteAllScalars=true]), // 提取后两列并转成键值表头 RightTable = Table.PromoteHeaders(Table.Transpose(Table.SelectColumns(Source,{"Column3", "Column 4"})), [PromoteAllScalars=true]), // 合并两个单行表格为最终结构 FinalTable = Table.FromRecords({Record.Combine({LeftTable{0}, RightTable{0}})}) in FinalTable
内容的提问来源于stack exchange,提问作者OuluChris
相关产品推荐
相关产品推荐

