Buscar cadenas de texto con el método InStr en Microsoft Excel

Escrito por Administrador

18 de abril de 2023

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,

enviar-pedidos-proveedores-por-email-excel

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,

enviar-pedidos-proveedores-por-email-excel

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.

enviar-pedidos-proveedores-por-email-excel

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

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Últimas publicaciones

Categorías

abril 2024
LMXJVSD
1234567
891011121314
15161718192021
22232425262728
2930 

Debates en el foro

Avatar
Formularios con ADO

Contacto