Прошу помочь с решением задачи. Дана таблица, где в некоторых полях ячейка содержит 2 записи: 25.11.2018; 26.11.2018 Я применяю Text.Split([Поле 2], ";")) чтобы создать список значений.
Результат работы функции меня устраивает. Но мне не нравится сценарий, где я каждый раз создают новое поле. Если у меня 20 полей, то я создам 20 новых полей с помощьюText.Split([Поле 2], ";"))и удалю старые 20.
Хотелось бы просто заменить текущее поле. Или ещё лучше - одним шагом обработать несколько полей.
Прошу подсказать как это сделать. Прикладываю файл примера с подготовленным запросом. Благодарю!
let
Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
Вывод = Table.TransformColumns(
Источник,
List.Transform(
Table.ColumnNames(Источник),
each {_,(t)=>Text.Split(Text.From(t),"; "), type list}) )
in
Вывод
PooHkrd, благодарю! Сейчас попробую. PooHkrd, я заметил, что при моём подходе, если в ячейке ничего нет (null), то в новом столбце появляется ошибка. Можно Вас попросить подсказать как установить "обработку" данного сценария?
PooHkrd, в Вашем решении, вся таблица превращается в список в вложенными списками, т.к. в Table.ColumnNames(Источник) передаётся вся таблица. Каким образом можно передать только некоторые столбцы?
Вывод = Table.TransformColumns(
Источник,
List.Transform(
Table.ColumnNames(Источник),
each {_,(t)=>try Text.Split(t,";") otherwise {t}, type list}) ),
итог = Table.SelectColumns(Table.AddColumn(Вывод, "данные", each Table.FromColumns({[Поле 1], [Поле 2], [Поле 3], [Поле 4]})), "данные"),
Table.ColumnNames(Источник) - мне не хотелось бы передавать всю таблицу. У меня может быть 10 полей которые не нуждаются в "извлечении". На следующем шаге мне придётся прописать эти 10 полей с теми, что мне нужны:
let
Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
Вывод = Table.TransformColumns(
Источник,
List.Transform(
{"Поле 2", "Поле 3", "Поле 4"},
each {_,(t)=>Text.Split(Text.From(t),"; "), type list}) )
in
Вывод