En este artículo veremos cómo podemos hacer una búsqueda de una cadena de texto en un listado de datos, de forma que conforme vayamos escribiendo una cadena de texto en una celda nos vaya mostrando todos aquellos datos que incluyan esa cadena de texto,
Eso puede ser muy útil cuando deseamos filtrar entre todos los artículos de nuestro inventario de productos.
Para ello utilizaremos tres columnas auxiliares y diversas fórmulas que se pueden implementar fácilmente para el cualquier otro caso que pueda requerirse.
Caso práctico: búsqueda de cadena de texto en Excel
En este caso práctico tenemos en la columna A un listado con todos los países del mundo. Conforme escribamos un texto en la celda G2 queremos que debajo, de G3 hacia abajo de todos los países que contengan esa cadena de texto.
En el ejemplo que tenemos al escribir «UN» aparecen todos los países que contienen UN en su nombre (Burundi, Hungría, etc.).

Para poder realizar este ejercicio necesitaremos 3 columnas auxiliares que tendremos ocultas.
Las tres columnas auxiliares son las columnas B, C y D.

Asignar número de fila
La columnas B lo que hace es asignarle un número de fila a cada uno de los países y lo vamos a obtener de una forma dinámica, con la función FILAS.
La función FILAS devuelve el número de filas de una referencia o matriz.
La formula a introducir en este caso sería =FILAS(A$3:A3).
De esa forma obtenemos todos los países numerados según su posición en filas.

Ver si el dato contiene la cadena de texto
En la columna auxiliar C introduciremos un fórmula para que, en el caso de que cumpla la condición de que el país contenga el texto introducido en la celda G2, nos devuelva el número de fila de ese país. En caso contrario queremos que la celda quede en blanco.

Con la función ENCONTRAR buscaría la cadena de texto en el nombre del país. En caso de encontrarlo, nos devuelve la posición de esa cadena de texto. Es decir, devolvería un número. Por tanto, si contiene la cadena de texto devuelve un número y en caso contrario, devolvería el error #¡VALOR!.
Con la función ESNUMERO obtenemos el valor VERDADERO si encuentra un número en la celda y FALSO si no tiene un número.
En consecuencia realizamos utilizaremos la función SI para que nos devuelva el número de fila del país si el VERDADERO y la celda en blanco si es FALSO.
Anidando las tres funciones (ENCONTRAR, ESNUMERO y SI) en una fórmula obtenemos el resultado buscado: el número de fila del país que cumple la condición de incluir la cadena de texto.
La fórmula a utilizar en nuestro caso práctico sería la siguiente:
=SI(ESNUMERO(ENCONTRAR($G$2:A3));B3;»»)
Agrupar los países que cumplen la condición
En la tercera columna, la columna D, lo que haremos es colocar todos los países que cumplen la fórmula anterior (es decir, que contienen la cadena de texto).
Para ello utilizaremos la función K.ESIMO.MENOR.
Con esa función ordenaremos en la columna D todos los países de menor a mayor número de fila.
Lo anidaremos en la función SI.ERROR para que no aparezca un error cuando el país no contenga la cadena de texto.

La fórmula a utilizar es la siguiente:
=SI.ERROR(K.ESIMO.MENOR($C$3:$C$238;B3);»»)
Vemos que todos los países que cumplen que contienen la cadena de texto, su número de fila aparece en la columna D, ordenado de menos a más.
Obtener el nombre del país, una vez que tenemos la fila sería sencilla.
Obtener el listado de países
Para obtener el nombre del país utilizaremos la función INDICE.
Realizaría la búsqueda del rango de datos de países y como tenemos en la columna auxiliar D el número de fila, ese sería el segundo argumento de la función.
También aquí lo anidaremos en la función SI.ERROR.

La fórmula que utilizamos es =SI.ERROR(INDICE(A$3:A$238;D3);»»)
Una vez realizados todos estos cálculos podemos ocultar las columnas auxiliares y utilizar la hoja para hacer una búsqueda de datos según que contengan una cadena de texto o no.
Video explicativo:
Para suscribirte a mi canal de YouTube:
Deja una respuesta