Страницы: 1
RSS
Транспонирование с группировкой
 
Здравствуйте!
Пробовал транспонировать в Экселе, и через сводную таблицу, но не получается. Возможно есть простое решение:
Есть таблица из двух столбцов, в первом внешний ключ числовой, во втором значения ключа.
Нужно сгруппировать для 1 столбца и развернуть значения 2 столбца в отдельные столбцы, т.е
1 А
1 Б
1 Д
2 А
2 В
3 Б
Изменено: Mikh1 - 29.08.2022 11:13:59
 
Цитата
написал:
Здравствуйте!
Пробовал транспонировать в Экселе, и через сводную таблицу, но не получается. Возможно есть простое решение:
Есть таблица из двух столбцов, в первом внешний ключ числовой, во втором значения ключа.
Нужно сгруппировать для 1 столбца и развернуть значения 2 столбца в отдельные столбцы, т.е
1 А
1 Б
1 Д
2 А
2 В
3 Б
Преобразовать в
1 А Б Д
2 А В
3 Б
 
Power Query
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Sorted Rows" = Table.Sort(Source,{{"Column2", Order.Ascending}}),
    #"Grouped Rows" = Table.Group(#"Sorted Rows", {"Column1"}, {{"Count", each _, type table}}),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each [Count][Column2]),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Count"}),
    #"Extracted Values" = Table.TransformColumns(#"Removed Columns", {"Custom", each Text.Combine(List.Transform(_, Text.From), " "), type text}),
    #"Reversed Rows" = Table.ReverseRows(#"Extracted Values"),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Reversed Rows","Custom",Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv),{"Custom.1", "Custom.2", "Custom.3"}),
    #"Sorted Rows1" = Table.Sort(#"Split Column by Delimiter",{{"Column1", Order.Ascending}})
in
    #"Sorted Rows1"
 
Чуть покороче вариант:
Код
let
  data = Excel.CurrentWorkbook(){[ Name = "Table1" ]}[Content],
  group = Table.Group ( data, { "Column1" }, { { "tbl", ( t ) => Table.FromRows ( { { t[Column1]{0} } & List.Sort ( t[Column2] ) } ), type table } } ),
  combine = Table.Combine ( group[tbl] )
in
  combine
 
jakim,surkenny, благодарю!
Страницы: 1
Наверх