En su día, aprendimos a buscar palabras, o parte de ellas, en una hoja de cálculo usando el comando Find. Hoy vamos a ver cómo podemos buscar cadenas de texto dentro de otras en Microsoft Excel, usando el método InStr().
La sintaxis del comando es muy sencilla,
InStr([start], string1, string2, [compare])
start: define la posición inicial de cada búsqueda. Si se omite, la búsqueda comienza en la posición del primer carácter (opcional).
string1: cadena en la que se busca (obligatorio).
string2: cadena buscada (obligatorio).
compare: especifica el tipo de comparación de la cadena.
- vbUseCompareOption (Value -1): Realiza una comparación con la configuración de la instrucción Option Compare.
- vbBinaryCompare (Value 0): Lleva a cabo una comparación binaria.
- vbTextCompare (Value 1): Lleva a cabo una comparación textual.
- vbDatabaseCompare (Value 2): Solo Microsoft Access. Realiza una comparación que se basa en la información de la base de datos.
He creado un ejemplo con todas las opciones, para que veais lo sencillo que es,
Pero antes, os comparto el código que se encuentra detrás del botón Buscar,
Sub Buscar()
Dim SearchString, SearchChar, MyPos
'Comprobamos que se han rellenado el campo Cadena y Texto
If IsEmpty(Cells(3, "B")) Or IsEmpty(Cells(3, "C")) Then
MsgBox "Es necesario rellenar todos los campos"
Exit Sub
End If
SearchString = Cells(3, "B")
SearchChar = Cells(3, "C")
'Realizamos una comparación textual comenzando en la posición 4
MyPos = InStr(4, SearchString, SearchChar, 1)
Cells(2, "F") = MyPos
'Realizamos una comparación binaria comenzando en la posición 1
MyPos = InStr(1, SearchString, SearchChar, 0)
Cells(3, "F") = MyPos
'Realizamos una comparación binaria (por defecto omitiendo el último parámetro), comenzando en la posición 6
MyPos = InStr(6, SearchString, SearchChar)
Cells(4, "F") = MyPos
End Sub
En primer lugar, el código comprueba que los campos Cadena y Texto se encuentran rellenos. Una vez comprobado, realiza 3 búsquedas; una textual y dos binarias comenzando cada una de ellas por un carácter distinto de la cadena.
Si, por ejemplo, introducimos la cadena "aAbcbaAab", y buscamos el carácter "A", el resultado será el siguiente,
En la búsqueda textual, buscamos el carácter independientemente de si es mayúscula o minúscula. Por eso, si empezamos a buscar a partir del cuarto carácter, la primera letra "a", aparece en sexto lugar.
En la búsqueda binaria, sí buscamos la coincidencia de la letra mayúscula o minúscula. Por eso, al comenzar la búsqueda desde el primer carácter, la primera "A" la encontramos en segunda posición.
Por último, al obviar el parámetro de comparación, la búsqueda será (por defecto) binaria. Por eso, al comenzar a buscar por el sexto carácter, la primera "A" se encuentra en séptima posición.
También podemos introducir cadenas en el campo Texto y buscarlas dentro de la cadena principal.
En el ejemplo anterior, encontramos la cadena "Abc" en la posición 2.
En caso de introducir una texto inexistente en la cadena, el valor devuelto será 0, como se puede comprobar en la primera y tercera búsqueda del ejemplo anterior.
Espero que te haya sido de utilidad este ejemplo sobre cómo buscar cadenas de texto usando el método InStr en Excel. Descarga el archivo de ejemplo y practica.
Por último, quiero invitarte a compartir tus dudas en los comentarios o en el foro. Intentaré ayudarte en todo lo que pueda, y así aprenderemos todos.
Hasta la próxima.
Si te ha servido y quieres donar
Descarga el archivo del ejemplo
Últimas publicaciones
0 comentarios