如果我有一个像这样的简单的未透视列表:
名字 | 科目 |
---|---|
约翰 | 英语 |
山姆 | 艺术 |
弗雷德 | 生物学 |
约翰 | 生物学 |
艾玛 | 艺术 |
迈克 | 生物学 |
如何创建这样的列表,其中行彼此不相关,并且每列几乎都是一个单独的列表?旋转不起作用 - 这可能吗?
艺术 | 生物学 | 英语 |
---|---|---|
艾玛 | 弗雷德 | 约翰 |
山姆 | 约翰 | 空 |
空 | 迈克 | 空 |
谢谢
您需要在旋转之前分组并添加索引。
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Names", type text}, {"Subjects", type text}}),
#"Grouped Rows" = Table.Group(#"Changed Type", {"Subjects"}, {{"All", each _, type table [Names=nullable text, Subjects=nullable text]}}),
#"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each Table.AddIndexColumn([All], "Index")),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"All"}),
#"Expanded Custom" = Table.ExpandTableColumn(#"Removed Columns", "Custom", {"Names", "Index"}, {"Names", "Index"}),
#"Pivoted Column" = Table.Pivot(#"Expanded Custom", List.Distinct(#"Expanded Custom"[Subjects]), "Subjects", "Names"),
#"Removed Columns1" = Table.RemoveColumns(#"Pivoted Column",{"Index"})
in
#"Removed Columns1"
仅作为练习,不分组:
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
Ans = let s1=Table.Column(Source, "Subjects"),
s2=List.Sort(List.Distinct(s1)),
n1=Table.Column(Source, "Names"),
x=List.Numbers(0,List.Count(n1)),
n2=List.Transform(s2,(y)=>List.Accumulate(x,{},(s,c)=>if s1{c}=y then List.Combine({s,{n1{c}}}) else s)),
m=List.Numbers(0,List.Max(List.Transform(n2,(z)=>List.Count(z)))),
r1=List.Transform(m,(q)=>Record.FromList(List.Accumulate(s2,{},(s,c)=>List.Combine({s,{try n2{List.PositionOf(s2,c)}{q} otherwise null}})),s2)),
t1=Table.FromRecords(r1)
in t1
in
Ans