2012-04-20 11 views
5

Jestem całkiem nowy dla i staram się dowiedzieć, jak zidentyfikować kod pocztowy, który mieści się w zakresie, w którym zmienia się jeden znak.Konieczność zidentyfikowania zakresu kodów pocztowych

Na przykład chcę sprawdzić, czy kod pocztowy zawiera się między 2G8 a 2P8.

Innymi słowy, zakres co szukam byłoby 2_8 gdzie podkreślenia może być G do P, ale nie wiem, jak rozpoznać, że w kodzie.

Byłbym wdzięczny za pomoc w ustaleniu, jak podejść do tego problemu. Dzięki!

Odpowiedz

7

Możesz użyć funkcji VBA Mid, aby wyciągnąć każdą postać i potwierdzić ją zgodnie z regułami biznesowymi. Oto przykład, jak może wyglądać:

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 

ta funkcja zwróci wartość True lub False wskazującą, czy wejście jest ważny.

+0

+1 dla pierwszego roztworu roboczego – brettdj

+0

+1 Zgadzam z brettdj :) –

9

LIKE unika powtórzone badanie String

1. Prosty test

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

2. Case Insensitive wersja

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

+1 Uzgodniony. Mój 'VBA' jest zardzewiały :) – mellamokb

+1

Wielkie dzięki, które działało naprawdę łatwo. Teraz głównym problemem jest to, że mam tak wiele zakresów, że muszę filtrować, więc musiałbym stworzyć osobną funkcję dla każdego z nich. – user960358

+1

Możesz umieścić zakresy w tablicy i przejść przez nią i sprawdzić, czy którykolwiek z nich pasuje. – mellamokb