Файлы к уроку:
Описание
В этом уроке мы обработает файл, который мне прислал подписчик и спонсор канала.
В исходных данных каждая строка разделена на несколько, а наша задача правильно соединить строки.

Единственный способ отличить начало строки — это цифра вначале названия. Именно за цифру мы и будем цепляться, решая эту задачу.
Итог должен выглядеть так:

Решение
Сначала нужно извлечь цифру из каждой строки. По этой цифре нужно сделать группировку с агрегированием текста. После этого останется лишь разделить полученный агрегированный столбец по пробелу.
Примененные функции
- Excel.CurrentWorkbook
- Table.AddColumn
- Number.From
- Text.BeforeDelimiter
- Table.FillDown
- Table.Group
- Text.Combine
- Table.SelectColumns
- Table.SplitColumn
- Splitter.SplitTextByDelimiter
- QuoteStyle.Csv
- Table.PromoteHeaders
Код
let
source = Excel.CurrentWorkbook(){[Name = "Таблица1"]}[Content],
col_num = Table.AddColumn(
source,
"Строка",
each try Number.From(Text.BeforeDelimiter([Столбец1], " ")) otherwise null
),
fill_down = Table.FillDown(col_num, {"Строка"}),
group = Table.Group(
fill_down,
{"Строка"},
{{"Новая строка", each Text.Combine([Столбец1], " "), type text}}
),
select_col = Table.SelectColumns(group, {"Новая строка"}),
split_col = Table.SplitColumn(
select_col,
"Новая строка",
Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv),
{
"Новая строка.1",
"Новая строка.2",
"Новая строка.3",
"Новая строка.4",
"Новая строка.5",
"Новая строка.6",
"Новая строка.7",
"Новая строка.8",
"Новая строка.9",
"Новая строка.10",
"Новая строка.11"
}
),
promote_headers = Table.PromoteHeaders(split_col, [PromoteAllScalars = true])
in
promote_headers