let
Источник = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
ОбъединенныеСтолбцы = Table.CombineColumns(Table.TransformColumnTypes(Источник, {{"Респондент", type text}, {"Возраст", type text}}, "ru-RU"),{"Респондент", "Пол", "Возраст"},Combiner.CombineTextByDelimiter(";", QuoteStyle.None),"Сведено"),
СгруппированныеCтроки = Table.Group(ОбъединенныеСтолбцы, {"ДХ"}, {{"Таб", each Table.Transpose( Table.RemoveColumns( _, {"ДХ"}) ), type table}}),
РазворачиваемСтолбцы = Table.ExpandTableColumn(СгруппированныеCтроки, "Таб", List.Union( List.Transform( СгруппированныеCтроки[Таб], (x) => Table.ColumnNames(x) ) ) ),
Имена = List.Buffer( Table.ColumnNames( Table.RemoveColumns( Источник, {"ДХ"}) ) ),
РазделяемСтолбцы = (t,i) =>
if Table.HasColumns( t, "Column" & Text.From(i) )
then @РазделяемСтолбцы( Table.SplitColumn( t, "Column" & Text.From(i), Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), List.Transform( Имена, each _ & "." & Text.From(i) ) ), i + 1)
else t,
Результат = РазделяемСтолбцы( РазворачиваемСтолбцы, 1 )
in
Результат |