Вы можете сделать это с помощью Power Query
(он же Get & Transform
в Excel 2016+). И если ваши исходные данные изменятся, вы можете обновить запрос.
- Выберите ячейку в таблице
- (в Excel 2016): лента данных, вкладка «Получить и преобразовать» из таблицы / диапазона
- В пользовательском интерфейсе PQ: группировка по
PersonCol
Операция: = All Rows
- Добавить столбец; Пользовательская колонка; формула:
=Table.Column([Grouped],"DataCol")
- Выберите двуглавую стрелку справа от заголовка столбца
Custom
.
- Извлечение значений
- Я использовал точку с запятой в качестве разделителя, используйте то, что не отображается в данных
- Разделить столбец по разделителю (точка с запятой) -> Данные в новых столбцах
- Удалите столбец таблиц, где вы ранее группировали данные
- Транспонировать стол
- Повышение первого ряда до заголовков
- Закрыть и загрузить туда, куда вы хотите
M-код
let
Source = Excel.CurrentWorkbook(){[Name="Table4"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"PersonCol", type text}, {"DataCol", type text}}),
#"Grouped Rows" = Table.Group(#"Changed Type", {"PersonCol"}, {{"Grouped", each _, type table [PersonCol=text, DataCol=text]}}),
#"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each Table.Column([Grouped],"DataCol")),
#"Extracted Values" = Table.TransformColumns(#"Added Custom", {"Custom", each Text.Combine(List.Transform(_, Text.From), ";"), type text}),
#"Split Column by Delimiter" = Table.SplitColumn(#"Extracted Values", "Custom", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), {"Custom.1", "Custom.2", "Custom.3"}),
#"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Custom.1", type text}, {"Custom.2", type text}, {"Custom.3", type text}}),
#"Removed Columns" = Table.RemoveColumns(#"Changed Type1",{"Grouped"}),
#"Transposed Table" = Table.Transpose(#"Removed Columns"),
#"Promoted Headers" = Table.PromoteHeaders(#"Transposed Table", [PromoteAllScalars=true]),
#"Changed Type2" = Table.TransformColumnTypes(#"Promoted Headers",{{"Person1", type text}, {"Person2", type text}, {"Person3", type text}})
in
#"Changed Type2"
Результаты