Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2015, 21:22   #1
Dr.House69
Пользователь
 
Регистрация: 12.04.2014
Сообщений: 16
По умолчанию Поиск в строке последовательности символов

всем добрый день! Прошу помочь с такой задачей:

Есть строка, в которой клиент пишет адрес. Необходимо из нее вытащить индекс. Сделать это нужно именно макросом.

Насколько я понимаю, тут необходимо работать с отдельными символами, и задавать условие, что подряд идут 6 символов с одной из 10 кодировок (т.е. цифры), чтобы не спутать например с номером дома. Индекс пишется в произвольном месте. Знаний, к сожалению, не хватает по функционалу. Помогите пожалуйста
Dr.House69 вне форума Ответить с цитированием
Старый 12.11.2015, 21:55   #2
AleksandrH
Заблокирован
 
Регистрация: 15.02.2010
Сообщений: 148
По умолчанию

В Гугле забанили?

Код:
Function getZip(addr As String)

Dim allMatches As Object
Dim RE As Object
Set RE = CreateObject("vbscript.regexp")

RE.Pattern = "(\d{6})"
RE.Global = True
RE.IgnoreCase = True

Set allMatches = RE.Execute(addr)

If (allMatches.Count <> 0) Then
    result = allMatches.Item(0).submatches.Item(0)
End If

getZip = result
End Function
AleksandrH вне форума Ответить с цитированием
Старый 12.11.2015, 22:56   #3
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

можем выкинуть:
1. RE.IgnoreCase = True - цифры не имеют регистра
2. RE.Global = True - глобальный поиск ни к чему (в 1 адресе 1 индекс)
3. обьявление allMatches и присвоение ему значения - причина см.п.2
4. оптимизируем записи некоторых операторов
получаем
Код:
Function Indx(adr As String) As String
  Dim RE As Object
  Set RE = CreateObject("vbscript.regexp")
  RE.Pattern = "(\d{6})"
  If RE.test(adr) Then Indx = RE.Execute(adr)(0)
End Function
чем пользоваться - решите сами, на одних и тех же данных функции дадут идентичные результаты
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 12.11.2015, 23:33   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Dr.House69,
извините, личный вопрос:
зачем Вы пишете
Цитата:
Поиск в строке последовательности символов
если вас интересует: "как выделить почтовый ИНДЕКС из строки с адресом" к чему эта витиеватость в формулировке вопроса? Ваш глобально сформулированный вопрос подтолкнул AleksandrH к глобальному решению)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 12.11.2015, 23:45   #5
svsh2016
Форумчанин
 
Регистрация: 16.06.2015
Сообщений: 100
По умолчанию

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

Код:
Function Indx1$(adr$)
 With CreateObject("vbscript.regexp"): .Pattern = "\d{6}"
  If .test(adr) Then Indx1 = .Execute(adr)(0)
 End With
End Function
svsh2016 вне форума Ответить с цитированием
Старый 13.11.2015, 00:03   #6
AleksandrH
Заблокирован
 
Регистрация: 15.02.2010
Сообщений: 148
По умолчанию

IgorGO, код не мой. Взят с одной из тем по ссылке которую я приводил. Просто решил проверить неужто гугл и не знает как на VBA індекс искать. Оказалось что знает

з.і. А на ютубвидео, по 2-й ссылке результатов поиска гугла, чувак этот код вбивает на своем примере
AleksandrH вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск всех символов в строке, кроме заданного exelim Общие вопросы C/C++ 1 09.08.2013 12:32
Поиск символов в строке Стремящийся C# (си шарп) 4 10.06.2012 22:28
Поиск последовательности чисел в строке файла. Паскаль Vlasii Помощь студентам 10 14.11.2010 12:27
поиск символов в строке и вывод их номера на экран Bobina Общие вопросы C/C++ 2 02.11.2010 14:51
Поиск последовательности цифр в строке mmx310 Microsoft Office Excel 14 05.02.2009 11:19