Страницы: 1
RSS
Извлечение цифровых значений из текста
 
Нужно извлечь, наименование и цифровые данные через запятую, см. пример в прикрепленном файле
 
Bergets,
1. День добрый, соблюдаем рамки приличия.
2. Поиском пользовались?
То что я вижу и какой запрос Вы делаете, обычной формулой не обойтись и нужен будет полноценный исходник - а не два примера, а то Вам так и пропишут через НАЙТИ "№"
Скорее всего Вам нужны регулярки, смотрите Тут
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Доброе время суток.
Цитата
Александр написал:
и нужен будет полноценный исходник
Коллега, разве вы не знаете, как ТСы рассуждают? - Если что-то сделают, тогда я примеры дополню, а если нет - то зачем себя любимого утруждать?  :)
С другой стороны может всё соответствует схеме одной строки. Под неё и заточено предлагаемое решение, что цифровые данные всегда содержат ровно 4 цифры.
 
Злые все какие то, в старой теме нашел написал там, так предложили создать тему, побежал создавать тему, тут пишут "поиск не не слышал", прям как в типичной РФ гос конторе пинают, ну или в поликлинике.
Андрей спасибо, но полагаю, тут только бейсиком, формулами такое не решить? числа могут быть от 1 до 4 знаков
Изменено: Bergets - 21.09.2018 14:14:26
 
Цитата
Bergets написал:
формулами такое не решить?
Однозначного ответа дать не могу. Формулист из меня тот ещё :)  Может и можно, заглянет медведь, глядишь с высоты своего формульного таланта и даст заключение, можно или нет.
Цитата
Bergets написал:
Злые все какие то,
Вы бы ради интереса прочитали начала последних тем штук так 30-40, думаю бы тоже озверели, пытаясь понять, что автор вопроса хочет ;)
Ну, не нравятся вам правила форума, не хотите вникать в них и соблюдать - так это не единственный в мире форум, просто находите тот, где можно в свободной форме спрашивать.
Изменено: Андрей VG - 21.09.2018 14:21:19
 
Андрей VG предложил решение, но на основе показанных данных. Вы же увидели только злого погоняльщика, помогающему не ответили: подошло, не подошло, если нет - почему не принимается...

Если структура одинакова и извлечь 3-4 текстовых кусочка, формулой можно. Но т.к. текстовые функции не любят работать в массивах, получите длинную формулу из одинаковых фрагментов.
 
Bergets, я вам в прошлой теме написал покажите 10 строк с различными вариантами текста в ячейке и что в итоге а потом еще обиженки да тут для вашей одной строчки человек 20 напишет формулу в 3 этажа и для вашего примера они будут рабочей вам Андрей VG, предложил вас не устроило так вот и остальные просто заходят смотрят что за пример вы приложили и просто идут дальше так как знают что будет вот так
Цитата
Bergets написал:
Андрей спасибо, но полагаю, тут только бейсиком, формулами такое не решить? числа могут быть от 1 до 4 знаков
Лень двигатель прогресса, доказано!!!
 
Цитата
Андрей VG написал:
заглянет медведь
он в другой теме помогает :-)  , да и тот кому он помогает там  :-) здесь медведю порой фору может дать тем более что медведь совершенно согласен, что при такой разношерстной структуре будет чудо-юдо  формула без гарантии работы на 100%, а лично  по моему мнению, что если формула на 100% не дает гарантированный результат , то она не работает.

Bergets, Вы не обижайтесь, мы тут всем помочь готовы, но действительно бывают случаи когда все не устраивает

Off
Зал суда… Идёт бракоразводный процесс. Судья: — Почему вы хотите развестись со своим мужем?.. — А он меня в постели не устраивает!.. Женские голоса из зала: — Всех устраивает, а её не устраивает!.. Мужские голоса: — Да её вообще никто не устраивает!!!
По вопросам из тем форума, личку не читаю.
 
Друзья, я не в курсе предыдущей темы, просто исходя их вопроса и опыта, я понимаю, что формулами такое решать проблематично (как все высказались), а иногда и вовсе не возможно.
Регулярки это мощь: \d{4} и все ( с условием если всегда 4 знака), но надо видеть исходник.
Цитата
Bergets написал: Злые все какие то
Это не мы злые, это форум такой :)  
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Цитата
Александр написал: это форум такой  
Это формул такой :-)
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал: Это формул такой
Это к стати, то же имеет место быть. Кому хочется 3х этажные формулы набивать)))
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Bergets, а Вы перечитайте своё стартовое сообщение - это нормально? Зашли, не поздоровались, а только "нужно".
Мы злые, а Вы вежливый?
 
Кто злой?

Да мы сама дружелюбность

Цитата
Александр написал:
Кому хочется 3х этажные формулы набивать)))
Да есть тут любители :-)
По вопросам из тем форума, личку не читаю.
 
еще вариант UDF в G4
Код
 Function aaa$(t$)
         Dim i&
 With CreateObject("VBScript.RegExp"): .Global = True: .Pattern = "[\s\.№](\d{4})(?=\D)"
    For i = 0 To .Execute(t).Count - 1: aaa = aaa + "," + .Execute(t)(i).Submatches(0): Next
       aaa = Mid(aaa, 2)
  End With
End Function
Изменено: кузя1972 - 21.09.2018 16:02:00
 
Цитата
БМВ написал:
Да есть  тут любители  :-)
Ну у нас всякое бывало :)
Код
=ЕСЛИ(ЕОШ(НАЙТИ("Опора";[@[Описание позиции]]))=1;RegExpExtract([@[Описание позиции]];"\d+");ЕСЛИ(RegExpExtract(D4;"(\b\d+[,]\d+\b|[ ]\d+|[^-]\d+)(х|x)\d+([,|.]\d|[ ])")="Error 2015";"";RegExpExtract(D4;"(\b\d+[,]\d+\b|[ ]\d+|[^-]\d+)(х|x)\d+([,|.]\d|[ ])")))
Хотя тема не об этом:))
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Благодаря этой теме научился использовать, регулярки, спасибо добрые люди. Подскажите еще пожалуйста как можно обойти некоторые проблемы и сделать более универсально, собрал самое проблематичное выражение
"КОМПАНИЯ ООО / В том числе НДС 18%, 9999.02 руб. №1234 №2345, 3456 N4567 N 5678,6789 сч7890 сч 8901 сч.9123 сч. 1123 счетам 1223  и счету 7854 НДС 18%, 99999.99 руб"
используя "[#№Nчму,](\d{3,4}|\s\d{3,4})(?=\D)" у меня попадает ", 9999" и не попадают  "сч.9123" и "сч. 1123" что еще нужно добавить что бы работало абсолютно все? если добавляем "\." она потом пихает везде год из выражений вида "12.12.2018"
Изменено: Bergets - 23.10.2018 12:56:38
 
Bergets, с Вас файл как есть и как надо.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
Страницы: 1
Наверх