например "Технические характеристики № 01.04.2021 (конструкции техники)" мне необходимо вернуть текст до даты, сложность в том что после даты может быть любой текст или ничего и предугадать через text delimeter сложно и много строчек писать надо. Дата тоже разная может быть
Можно пойти таким образом: 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 хотел дату захватить
Обсуждают сегодня