Intentando ayudar a resolver el problema planteado por un lector amigo, y luego de un buen tiempo (como siempre) alejado de mi querido blog, vuelvo con una entrada que nos permitirá dotar a Excel de cierto profesionalismo a la hora de realizar búsquedas en una tabla de datos.
Vamos a realizar el trabajo sobre un ejemplo sencillo y fácil de comprender, ya que lo considero la mejor forma de encarar el aprendizaje de algo nuevo.
El tema planteado es, mas o menos, así: "tengo una tabla con los campos 'nombre' e 'importe', quisiera que al ir tipeando el nombre de una persona, Excel me vaya mostrando todos los registros que coincidan con la palabra ingresada" ¿Se entiende?
Si fuese una búsqueda común no presentaría ningún reto, ya que pongo, por ejemplo, "dam" en una celda, presiono el botón Buscar... y listo, me trae todos los registros que comienzan por "dam". Pero aquí mi amigo pone un desafío interesante: que a medida que vayamos tipeando el nombre se muestren los resultados. Y con una sencilla macro y autofiltros, se puede.
como verán en la imagen, ingresé "dam" y los resultados van apareciendo a medida que voy tipeando cada letra.
[+/-] Ver el resto / Ocultar
Para este trabajo me valdré de un control ActiveX: el TextBox, o Cuadro de Texto, para ser mas castellanos. En él iremos ingresando las letras y, ante cada caracter, se activará el filtro avanzado que irá mostrando los resultados parciales. Esta es la tabla que contiene todos los nombres e importes:
la tabla de dos columnas, sencilla
Dentro de este blog encontrarán como utilizar los filtros avanzados, doy por sentado que ya conocen su funcionamiento básico.
Ahora coloco en la hoja de cálculos en ya citado TextBox, el cual lo extraigo del "Cuadro de Controles" (clic derecho al lado del menú de Excel y del cuadro emergente seleccionar dicha herramienta):
Y aquí el objeto en cuestión: noten que lo coloco sobre el encabezado de la tabla, para ocultarlo
.
En A1 colocamos el nombre del campo por el cual filtraremos la tabla:
Luego ocultaremos la fila 1 y 2, para que el "truco" no quede visible.
Listo, ya tenemos armado "el circo" dentro de la planilla: la tabla está en su lugar, también el TextBos que utilizaremos para ir tipeando el nombre y las celdas A1 y A2, indispensables para activar el filtro avanzado.
La lógica para resolver el planteo es la siguiente:
1) Ingreso letras en el cuadro de texto
2) Lo ingresado en el punto anterior se transfiere a la celda A2
3) Activo el filtro avanzado en base a lo que hay en A2, por cada letra que se tipee
Y el resultado será:
¿ven? Lo que escribí en el cuadro de texto se pasó al rango A2, de ahí se activó el filtro avanzado y, aplicado sobre la tabla, trajo todos los registros que comienzan con "e"
Anda de 10. Sería bueno un pequeño vídeo para observar la animación... pero no tengo ganas de grabarlo. Mis lectores ya conocen la vagancia que poseo al respecto y deberán bajarse el archivo para disfrutar de su funcionamiento. =)
Vamos a las macros:
Creo un módulo en mi proyecto y coloco lo siguiente:
el filtro avanzado en acción: le paso el rango que ocupa la tabla (aquí también es viable colocarle un nombre al rango) y le digo que filtre de acuerdo al criterio de A1:A2. Así de sencillo y breve
Luego voy a crear un pequeño sub que muestre todos los registros en caso de que el usuario deje el cuadro de texto en blanco:
Bien, sigamos.
Dijimos que por cada letra ingresada se deberá ir activando el filtro avanzado, así que voy a hacer uso del evento "Change" (cambio) del cuadro de texto. Colocaré ahí dentro la macro, para que se active cada vez que el usuario ingrese un caracter dentro del TextBox:
Vamos con el línea x línea:
Con Application.ScreenUpdating = False, hago que desaparezcan los parpadeos de pantalla. Luego hay un bloque If muy fácil de entender: si el cuadro de texto no contiene ningún valor (o sea, que está "en blanco"), llamo al Sub que quita el filtro avanzado de la tabla.
A continuación le indico que el rango A2 refleje lo ingresado en el TextBox y, obviamente, llamo a la macro que activa el filtro avanzado. Pongo en True el ScreenUpdating y listo, se terminó la historia.
Cabe destacar que todo lo mencionado en el párrafo anterior sucede cada vez que tipeamos una letra dentro del cuadro de texto: de esta forma logramos que Excel nos vaya mostrando resultados parciales, en base a cada letra ingresada. Bajen el archivo y póngalo en funcionamiento, es una herramienta útil y muy convincente, le da un "toque" profesional muy bueno a nuestro trabajo.
También funcionan los comodines, como en cualquier búsqueda:
con "*n" logramos un buen efecto, filtrando los datos que contienen la letra "n"
Un gran saludo a todos, disculpen que me demore tanto en escribir y responder (cuento con muy poco tiempo), aunque creo que lo fundamental es ir manteniendo el blog y que con las entradas se puedan crear nuevos conocimientos y formas mas sencillas y prácticas de realizar nuestras labores diarias.
Comentarios
Publicar un comentario