需要根据它们所指的 id 将一列值拆分为多列

Need to split a column of values into multiple columns, based on the id they are referring to

基本上,我有这个假人 table:

People Group ID
Albert 1
Bernard 1
Charles 2
Daniel 2
Elizabeth 3
Francis 3

我想要的是:

People 1 People 2 Group ID
Albert Bernard 1
Charles Daniel 2
Elizabeth Francis 3

我试过在这里和那里随意旋转和取消旋转,但无济于事,有什么想法吗?

在 powerquery 中,

右键单击 GroupID 列和分组依据...

允许默认选项并点击确定

更改公式栏中公式的最后一部分(或在主页...高级编辑器...)从

= Table.Group(Source, {"Group ID"}, {{"Count", each Table.RowCount(_), type number}})

 = Table.Group(Source, {"Group ID"}, {{"Count", each Text.Combine(List.Transform([People], Text.From), ","), type text}})

将人员列合并为一列,用逗号分隔

然后右键单击该列并按分隔符拆分列,每次出现一个逗号

完整示例代码:

let Source = Excel.CurrentWorkbook(){[Name="Table5"]}[Content],
#"Grouped Rows" = Table.Group(Source, {"Group ID"}, {{"Count", each Text.Combine(List.Transform([People], Text.From), ","), type text}}),
#"Split Column by Delimiter" = Table.SplitColumn(#"Grouped Rows", "Count", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"Count.1", "Count.2"})
in #"Split Column by Delimiter"

//fancy version that includes Column titles and auto adjusts for dynamic number of columns
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Grouped Rows" = Table.Group(Source, {"Group ID"}, {{"Count", each Text.Combine(List.Transform([People], Text.From), ","), type text}}),
DynamicColumnList = List.Transform({1..List.Max(Table.AddColumn(#"Grouped Rows", "Custom", each List.Count(Text.PositionOfAny([Count], {","}, Occurrence.All)))[Custom])+1}, each "Person." & Text.From(_)),
#"Split Column by Delimiter" = Table.SplitColumn(#"Grouped Rows","Count",Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv),DynamicColumnList  )
in  #"Split Column by Delimiter"

另一种方式....

右键单击 GroupID 列和分组依据...

允许默认选项并点击确定

更改公式栏中公式的最后一部分(或在主页...高级编辑器...)从

= Table.Group(Source, {"Group ID"}, {{"Count", each Table.RowCount(_), type number}})

= Table.Group(Source, {"Group ID"}, {{"count", each Table.AddIndexColumn(_, "Index", 1, 1), type table}})

使用新列顶部的箭头并展开 [x] 人和 [x] 索引

点击select索引列,变换数据透视表,选择People作为值,高级选项,不聚合

完整示例代码

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
Group = Table.Group(Source, {"Group ID"}, {{"count", each Table.AddIndexColumn(_, "Index", 1, 1), type table}}),
#"Expanded count" = Table.ExpandTableColumn(Group, "count", {"People", "Index"}, {"People", "Index"}),
#"Pivoted Column" = Table.Pivot(Table.TransformColumnTypes(#"Expanded count", {{"Index", type text}}, "en-US"), List.Distinct(Table.TransformColumnTypes(#"Expanded count", {{"Index", type text}}, "en-US")[Index]), "Index", "People")
in #"Pivoted Column"