2012-04-20 5 views
5

Я довольно новичок в , и я пытаюсь выяснить, как определить почтовый индекс, который попадает в диапазон, в котором меняется один символ.Нужно идентифицировать между диапазоном почтовых индексов

Например, я хочу видеть, существует ли почтовый индекс между 2G8 и 2P8.

Другими словами, диапазон того, что я ищу будет 2_8 где подчеркивание может быть G к P, но я не знаю, как определить, что в коде.

Я очень благодарен за помощь, чтобы выяснить, как подойти к этой проблеме. Благодаря!

ответ

7

Вы можете использовать функцию VBA Mid, чтобы вытащить каждый символ и проверить его в соответствии с вашими бизнес-правилами. Вот пример того, как это может выглядеть:

Function ValidatePostalCode(code As String) 
    ValidatePostalCode = _ 
     (Mid(code, 1, 1) = "2") And _ 
     (Mid(code, 2, 1) >= "G" And Mid(code, 2, 1) <= "P") And _ 
     (Mid(code, 3, 1) = "8") 
End Function 

Эта функция возвращает значение True или False, указывающее, является ли вход правилен.

+0

+1 для первого рабочего раствора – brettdj

+0

+1 Agree с brettdj :) –

9

LIKE избегает повторного тестирования Струнных

1. Простого теста

Function ValidString(strIn As String) As Boolean 
ValidString = strIn Like "2[G-P]8" 
End Function 

2. Дело Нечувствительности версии

Function ValidString(strIn As String) As Boolean 
ValidString = LCase$(strIn) Like LCase$("2[G-P]8") 
End Function 
+1

+1 Согласен. Мой 'VBA' ржавый :) – mellamokb

+1

Спасибо большое, что сработало очень легко. Теперь главная проблема, с которой я сталкиваюсь, заключается в том, что у меня так много диапазонов, что я должен фильтровать, поэтому мне нужно создать отдельную функцию для каждого из них. – user960358

+1

Вы можете поместить диапазоны в массив и выполнить цикл и проверить, соответствует ли какой-либо из них. – mellamokb

Смежные вопросы