209 похожих чатов

Есть ли в Power query регулярки или маски? Есть текст

например "Технические характеристики № 01.04.2021 (конструкции техники)" мне необходимо вернуть текст до даты, сложность в том что после даты может быть любой текст или ничего и предугадать через text delimeter сложно и много строчек писать надо. Дата тоже разная может быть

14 ответов

65 просмотров

Можно пойти таким образом: Text.PositionOfAny([Данные], {"А".."я","A".."z"}) только вместо букв использовать цифры, вы получите позицию первого вхождения а после использовать функцию Text.Start - она Вам позволит "вытащить" нужное кол-во символов от начала строки. Помните такие операции требуют некоторых ресурсов и если у Вас источник SQL и лучше этот механизм сделать на SQL(будет делаться ресурсами сервера), но если иначе,то в PQ! :)

Пенкуздуй- Автор вопроса

Обычная экселька, строк 30-40к всего

Тогда в PQ!!! :) Отработает без проблем! :)

А тогда что бы не заморачиваться можно и в Excel сделать столбец и в PQ забирать уже готовый столбец! :) https://www.planetaexcel.ru/techniques/7/4844/

Ну нет, тащить макрос в эксельку такая себе идея

Так это совсем не сложно, код есть, нужно просто скопировать и вставить, а отрабатывает четко и без проблем! И когда данные будут обновляться, то будет всё пересчитываться. Я с помощью этого макроса сделал шаблон в который на 1 лист выгружался массив, на другом преобразовался этот массив с указанием пола, возраста и т.д. а далее просто был соединён с Word и несколько тысяч писем печаталось на раз. Всё отрабатывало четко и как часики. И на третьем листе сделал маленькую инструкцию из нескольких пунктов да и у меня там были проверки на ошибки. Показал человеку который не знает Excel, сориентировал на главные нюансы и всё у неё работало четко, без моего вмешательства. Поэтому это не беда, главное правильно написать инструкцию! :)

))))

Нужная дата всегда первая одна в строке? Дата всегда нормально записана?

Пенкуздуй- Автор вопроса

Возвращает пустое значение если даты нет, а так всё ок

так лечится просто: let f = (x) => [a = List.Buffer(Text.Split(x," ")), b = List.PositionOf(a,null,Occurrence.First, (c,v)=>Text.Length(c)=10 and Text.PositionOf(c,".",Occurrence.All)={2,5}), c = if b = -1 then x else Text.Combine(List.FirstN(a,b)," ")][c], from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], to = Table.AddColumn(from,"BeforeDate",each f([Столбец1])) in to

Пенкуздуй- Автор вопроса

Если в тексте нет даты он и возвращает пустое значение, твою формулу и использовал

Пенкуздуй- Автор вопроса

В принципе я условием прогнал если пусто то так иначе так

Пенкуздуй- Автор вопроса

Благодарю за решение 👍

Пенкуздуй- Автор вопроса

А, я же добавил +1 в positionof хотел дату захватить

Похожие вопросы

Карта сайта