2012-04-20 14 views
5

Soy bastante nuevo en y estoy tratando de encontrar la forma de identificar un código postal que se encuentre dentro de un rango donde un carácter cambia.Necesito identificar entre el rango de códigos postales

Por ejemplo, quiero ver si un código postal se encuentra entre 2G8 y 2P8.

En otras palabras, el rango de lo que estoy buscando sería 2_8 donde el subrayan puede ser G a P, pero no sé cómo identificar que en el código.

Realmente agradecería algo de ayuda para descubrir cómo abordar este problema. ¡Gracias!

Respuesta

7

Puede utilizar la función VBA Mid para extraer cada carácter y validarlo de acuerdo con las reglas de su negocio. Aquí está un ejemplo de cómo se puede tener un aspecto:

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 

Esta función devolverá un valor de True o False que indica si la entrada es válida.

+0

+1 por primera solución de trabajo – brettdj

+0

1 De acuerdo con brettdj :) –

9

LIKE evita las pruebas cadena repetida

1. Una prueba sencilla

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

2. Caso versión Insensible

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

+1 de acuerdo. Mi 'VBA' está oxidado :) – mellamokb

+1

Muchas gracias, que funcionó muy fácilmente. Ahora, el principal problema que tengo es que tengo tantos rangos que tengo que filtrar, así que tendría que crear una función separada para cada uno. – user960358

+1

Puede poner los rangos en una matriz y recorrer y verificar si alguno de ellos coincide. – mellamokb

Cuestiones relacionadas