需要根据它们所指的 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"
基本上,我有这个假人 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"