Страницы: 1
RSS
Обрезать текст по условию, Нужно обрезать текст в PowerQuery M, если текст содержит символ GSL
 
Всем привет: в PowerQuery хочу создать столбец, в кот. будут браться значения из другой, обрезанные до опр символа. Если символа нет, то берётся вся ячейка
Text.Contains([Description]," GSL") then (вот тут должна быть формула, обрезающая текст, но если я беру простую формулу для обрезки из строки кода, которая генерируется автоматически при обрезке (= Table.AddColumn(#"Новый столбец", "Текст после разделителя", each Text.AfterDelimiter([Description], " KS"), type text), то выдаётся ошибка. Как быть?
Должно быть так
Начальный столбец->Результат
124364 GSL 545634->GSL 545634
1209588 ANG 999->1209588 ANG 999
Изменено: Excelopfer - 28.02.2024 12:18:48
 
Возможно через Text.Split(...)[1] получать
Но лучше как есть и как должно быть показать в файле
 
я сделал пример.
before  - как есть

after - результат.
custom - создал колонку, которая выдаёт, содержит ли столбец комбинацию "GSL"
 
Код
let
    Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content][[before]],
    result = Table.AddColumn(
        Quelle, "After", 
        (x) => 
            try Text.RemoveRange(
                x[before], 0, 
                Text.PositionOf(x[before], "GSL", Occurrence.First)
            ) 
            otherwise x[before]
    )
in
    result
Пришелец-прораб.
 
Код
= Table.AddColumn(#"Geänderter Typ", "Benutzerdefiniert", each if Text.Contains([before],"GSL") then "GSL" & Text.Split(_[before], "GSL"){1} else [before])
 
через Text.Split, как предлагал nilske, но с комбайном:
Код
Table.AddColumn(fr, "after1", (x)=>[z = Text.Split(x[before], " "),
                                    z1 = if (z{1} = "GSL") then Text.Combine(List.Skip(z), " ") else x[before]][z1])
Изменено: Garrys - 28.02.2024 13:14:07
 
Цитата
написал:
Кодlet
   Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content][[before]],
   result = Table.AddColumn(
       Quelle, "After",
       (x) =>
           try Text.RemoveRange(
               x[before], 0,
               Text.PositionOf(x[before], "GSL", Occurrence.First)
           )
           otherwise x[before]
   )
in
   result
Отлично! Сработало. Спасибо большое
 
Всем большое спасибо!
Страницы: 1
Наверх