En el fascinante mundo de la programación en VBA de Excel, los
comodines asterisco (*), signo de interrogación (?), numeral (#), corchetes [ ] o el
signo de exclamación (!) son herramientas poderosas que nos permiten realizar búsquedas y operaciones
de manera más eficiente y precisa. Estos símbolos actúan como 'comodines' que
representan cualquier carácter, rangos de caracteres o conjunto de caracteres,
lo que resulta especialmente útil al trabajar con datos variables al usar
macros:
Un comodín es un símbolo que se utiliza para reemplazar uno o más caracteres
en una cadena de texto. Por ejemplo, si tenemos la cadena de texto
“ta*”, encontrará palabras como
“tapa”, “tapir”, “talco”, “talla”, etc. En cambio, si usamos la cadena
de texto “ta?”, solo encontrará la palabra “tap”, “tal”, ya que el
comodín “?” sustituye a un solo carácter. El mundo de los comodines en
Excel suele ser muy amplio si usamos combinaciones entre ellos:
Uso del comodín asterisco (*) en VBA
El comodín asterisco representa cualquier número de caracteres ya sea a la
izquierda o a la derecha. Por ejemplo, supongamos que necesito conocer cuantas
palabras terminan en una letra "a", dentro del grupo de palabras "Tapa", "Mandil", "Tasa", "Móvil", "Licuadora", "Tacos", "Cuchara",
"Calzado",
entonces la búsqueda sería "*a", el resultado sería sólo
“Tapa”, "Cuchara", "Licuadora" y "Tasa" porque son las únicas palabras que terminan en una letra
"a".
El código implementado a un bucle For sería:
Sub comodin_asterisco()
Dim i As Integer
uFILA = Hoja1.Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To uFILA
If Range("A" & i).Value Like "*a" Then
Range("A" & i).Font.Color = vbRed
End If
Next i
End Sub
Obteniendo el resultado en una hoja de Excel cómo la que se muestra:
Como observas el comodín asterisco no le importa el número de caracteres que
tenga la palabra, sino que simplemente cumple una misión de buscar una letra
"a" al final de cada palabra y resaltarlo de color rojo. Teniendo este
patrón podemos realizar múltiples combinaciones del asterisco con caracteres
tanto a la izquierda y a la derecha.
Uso del comodín Interrogación (?) en VBA
El símbolo del signo de interrogación representa a un solo cifra, por ejemplo
si usamos los mismos datos de la tabla anterior y deseamos buscar todas las
palabras donde su penúltima cifra sea una letra "i" seguido de
cualquier otro cifra final. Entonces la búsqueda sería "*i?". Cómo
puedes observar usamos el asterisco para rellenar los caracteres que faltarían
por la izquierda. El código quedaría de la siguiente manera:
Sub comodin_interrogacion()
Dim i As Integer
uFILA = Hoja1.Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To uFILA
If Range("A" & i).Value Like "*i?" Then
Range("A" & i).Interior.ColorIndex = 8
End If
Next i
End Sub
Obteniendo el resultado como el que se muestra:
Cómo puedes observar en la imagen superior, las únicas palabras que contienen
como penúltima cifra a la letra "i" son Mandil y Móvil las cuales
les hemos aplicado un sombreado de color celeste con la
propiedad .Interior.ColorIndex.
[Listas de caracteres] cómo comodín
Si usamos el o los ejemplos anteriores para usar cadena de caracteres
permitidos vemos que se pueden modificar rápidamente para permitir utilizar el
signo de interrogación, además de una lista de caracteres permitidos en un
conjunto de palabras. Por lo tanto, la cadena comodín a utilizar puede
modificarse a la siguiente expresión "*[a-i]?", donde el primer
carácter asterisco busca cadenas de texto a la izquierda sin importar el
número, el segundo tiene que ser un carácter entre "a" e "i" y
la última letra será cualquier cosa "?". El código a usar
sería:
Sub comodin_listadecaracterespermitidos()
Dim i As Integer
uFILA = Hoja1.Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To uFILA
If Range("A" & i).Value Like "*[a-i]?" Then
Range("A" & i).Interior.ColorIndex = 36
End If
Next i
End Sub
Resultando en la hoja de Excel:
Cómo observas las únicas palabras que tienen un caracter "a" o un
caracter "i" se han sombreado de color amarillo gracias a la
propiedad Interior.ColorIndex = 36.
Comodín Numeral (#)
Similar al símbolo de interrogación, el símbolo del signo numeral representa a
un solo dígito numérico, por ejemplo si usamos los mismos datos de la tabla
anterior y deseamos buscar todas las cantidades que terminan en
"4". Entonces la búsqueda sería "#4". Quedando el código de la
siguiente manera:
Sub comodin_numeral()
Dim i As Integer
uFILA = Hoja1.Range("B" & Rows.Count).End(xlUp).Row
For i = 2 To uFILA
If Range("B" & i).Value Like "#4" Then
Range("B" & i).Font.Color = vbRed
End If
Next i
End Sub
Y de forma representativa en una hoja de Excel sería
En la imagen superior se aprecia que la búsqueda se hace en la hoja1, y
en la columna "B" resultado como resultado los números 24 y 34.
Comodín exclamación (!)
El comodín Exclamación excluye los caracteres incluidos entre los corchetes.
Por lo tanto, la cadena comodín a utilizar puede modificarse a la siguiente
expresión "*[!Co]?", donde el primer carácter asterisco busca cadenas
de texto a la izquierda sin importar el número, luego los caracteres entre
corchetes y entre ellos el signo de exclamación indica que los caracteres
"Co" no se tomarán en cuenta en la búsqueda y la última letra será
cualquier cosa "?". El código a usar sería:
Sub comodin_exclamacion()
Dim i As Integer
uFILA = Hoja1.Range("C" & Rows.Count).End(xlUp).Row
For i = 2 To uFILA
If Range("C" & i).Value Like "*[!Co]?" Then
Range("C" & i).Font.Color = vbBlue
End If
Next i
End Sub
Y representado de forma ejecutada en la hoja1 de Excel sería:
En la imagen anterior vemos que las palabras que cumplen tal criterio de
selección son simplemente tres.
Publicar un comentario