使用Power Query多列扩展合并Excel表格问题求助
Excel 365 Power Query 实现多行转多列合并需求
按你已完成左外部连接的基础,要把同一Name对应的多条Question转成Question 1、Question 2这类多列,按以下步骤操作:
步骤1:给嵌套表添加索引列
左连接后,Table2会以嵌套表的形式存在于合并结果中。先给每个嵌套表添加从1开始的索引,用来标记Question的顺序:
// 替换"MergedTable"为你实际的合并表名称,"Table2"为嵌套表列名 AddIndexToNested = Table.TransformColumns(MergedTable, {{"Table2", each Table.AddIndexColumn(_, "Index", 1, 1)}})
步骤2:展开嵌套表的必要字段
把嵌套表中的Question和新增的Index列展开成普通列:
ExpandedTable = Table.ExpandTableColumn(AddIndexToNested, "Table2", {"Question", "Index"}, {"Question", "Index"})
步骤3:透视表实现多行转多列
通过透视操作,将Index的不同值转为独立列,值对应Question内容:
PivotedResult = Table.Pivot(ExpandedTable, List.Distinct(ExpandedTable[Index]), "Index", "Question")
步骤4:重命名列(可选)
把默认的数字列名改成Question 1、Question 2的格式:
FinalTable = Table.RenameColumns(PivotedResult, List.Transform(List.Skip(Table.ColumnNames(PivotedResult), 3), (colName) => {colName, "Question " & colName} ) )
完整M代码示例
把以上步骤整合,替换对应表名和列名即可直接使用:
let Source = MergedTable, // 替换为你的合并表 AddIndexToNested = Table.TransformColumns(Source, {{"Table2", each Table.AddIndexColumn(_, "Index", 1, 1)}}), ExpandedTable = Table.ExpandTableColumn(AddIndexToNested, "Table2", {"Question", "Index"}, {"Question", "Index"}), PivotedResult = Table.Pivot(ExpandedTable, List.Distinct(ExpandedTable[Index]), "Index", "Question"), FinalTable = Table.RenameColumns(PivotedResult, List.Transform(List.Skip(Table.ColumnNames(PivotedResult), 3), (colName) => {colName, "Question " & colName} ) ) in FinalTable
说明:如果你的Table1字段数不是3个(Name、Industry、Date),调整List.Skip里的数字即可(跳过Table1的字段数量)。
内容的提问来源于stack exchange,提问作者Johannes
相关产品推荐
相关产品推荐

