Formulario de Búsqueda en Excel

Una de las cosas más interesantes que tiene Excel es el tema de búsquedas. Por lo general se utiliza la formula “buscarV” o “buscarH”.
BuscarV busca sobre los valores de la primera columna de una matriz de datos.
El problema que plantea BuscarV es que muestra un solo dato de búsqueda, es decir, que debemos tener valores únicos ya que si tenemos valores repetidos en la columna de búsqueda, mostrara solo el primer valor encontrado en la cima de datos. Esa es la desventaja que plantea esta formula.
Por ejemplo si tenemos un inventario con un código único para cada producto, buscaríamos según el código único del producto y sabiendo el código nos traería el nombre del producto u otra información.

Lo que ocurre es que podemos tener cientos de productos o más y debemos recordar un código. Con la práctica diaria puede que se vuelva un poco menos tedioso recordar el código llevadero pero realmente es tosco y complicado tener que acordarnos de los productos.  Es cierto que se solucionaría si los productos traen etiqueta. Sin embargo en otras aplicaciones, generalmente, no necesitamos o no queremos un código sino utilizar una palabra clave.
Otra forma de buscar podría ser con el formulario de búsqueda de Excel, el que aparece al apretar las teclas “Control + B”. En ciertas aplicaciones mediante una macro podríamos utilizar este método. Lo cierto es que introducimos una palabra o parte del código que estamos buscando y luego nos señala dónde esta.  Si hay más de una palabra que contiene el código de búsqueda vamos a tener que ir salteando hasta encontrar la correcta.
En este post  mostrare una alternativa para un formulario de búsqueda sencillo y útil que nos soluciona los problemas que traen aparejado los métodos anteriores.

No se si han visto algún programa mas profesional, de ventas u otros, dónde tienen la forma común de buscar según código. Además  hay algunos que traen la posibilidad de buscar por producto, nombre o palabra clave. Cuando introducimos la búsqueda nos muestra todas las coincidencias según lo introducido.
Es  interesante poder buscar por código en caso de que recordemos el código o poder buscar por nombre o palabra clave del producto en otros casos.
En el ejemplo que les voy a mostrar puede mediante la misma celda buscar por código y por palabra clave, evitando formularios de muchas celdas o algo más complejo.
Este ejemplo es básico para que lo entiendan, pero tiene aplicación en muchos otros casos.
A continuación les muestro un video del funcionamiento, luego explicare brevemente como pueden hacerlo.
Como ven, en un formulario tengo la celda donde introduzco el valor de búsqueda, ya sea un código o ya sea una palabra clave.

En el caso de ser un código, cómo será único, mostrara la info correspondiente. En el caso de que introdujamos una palabra clave, esta puede encontrar varios valores que contengan el criterio de busca, en esta situación mediante el filtro automático me muestra esos valores, dónde puede elegir el que me interesa.
Aclaración Importante: en internet hay miles de cursos y de videos explicativos de aplicaciones en Excel. Lo que tienen que saber es lo siguiente:
·         Siempre pueden hacer un formulario usando las celdas de Excel, de la planilla, es más sencillo y se ahorran programación y complicaciones.
·         Siempre utilicen formulas primero, aunque sea un poco complicada es mejor ya que no necesitaran códigos ni preparan la hoja para macros.

·         Si agotaron todas las instancias y recursos, herramientas, que no da Excel, solo entonces utilicen una macro, un formulario ActiveX, botones de comando, etc.
·         La planilla debe ser lo mas simple posible, no hay necesidad de agregar formularios emergentes y cosas que pueden ser muy útiles pero desvirtúan la idea de que Excel es una planilla de Cálculo.
·         Si agotaron todas las posibilidades o las funcionalidades que Excel puede lograr les sugiero que usen soft para programación avanzada, ya sea para aplicaciones o base de datos.
·         Si Excel se vuelve muy pesado para ser usado como base de datos, utilicen otro programa para base de datos como Access.

·         Siempre tengan en cuenta quien será el usuario final de la planilla, si serán Uds. o un grupo de trabajo, ya que deben protegerla o implementar algún tipo de seguridad para no dañar las formulas, el formato  o código utilizado.
Los comentarios anteriores se listan, entre otros, porque en internet encontraran millones de tutoriales o videos en donde muestran aplicaciones donde se complican demasiado o le agregan cosas sin necesidad para parecer más inteligentes. Yo sé que es así, hay personas muy inteligentes pero como les dije antes, el nivel de desarrollo o de complejidad de la planilla tiene que seguir o estar en línea con nuestros requerimientos, la aplicación, el usuario, etc.
Código:
Utilizamos un Evento en la hoja “Worksheet Change”, un filtro y un buscarV.
Funcionamiento:
Cuando se introduce un código numérico en el rango especificado,  la celda del valor buscado funciona con la formula BuscarV.
En el caso que se introduzca un código diferente, no numérico, por ejemplo una palabra clave,  se listan todos los campos que contienen dicha palabra clave, dónde elegiremos el que nos interesa.
Keys:

30 comentarios:

yaiba dijo...

Buen tutorial, estoy experimentando a ver si me sale! Gracias por tu pronta respuesta al correo ^^ a ver si el tema de las macros me sale bien! Un saludo!

Eric Stars

Erika Villamil dijo...

Hola... Despues de tanto buscar por fin encontre lo que necesitaba en tu blog... la verdad no tengo muchas nociones de manejo de excel y tu tutorial es super bueno, pero tengo una duda... al poner el codigo para buscar me sale 0, no entiendo como hacer que relacione el numero de busqueda y me muestre el nombre del alumno, supongo que se hará con la macro que tu nombras... si fuese asi porfa me podrias explicar como se hace... Muchas gracias por tu ayuda!!!

Juan Pablo dijo...

Erika, estoy muy contento que te sirva el tutorial...puedes bajar de la zona de descargas la planilla y te fijas bien cómo es..
Sí aún así no puedes resolverlo ...déjame otro comentario o directamente me escribes con el formulario "Consultas" y te responderé directamente.
Gracias nuevamente

Cristián Henríquez dijo...

Tengo una duda, ya puse el codigo buscarv en las celdas, pongo el codigo arriba y me aparece el nombre que estoy buscando. Pero no se como poder filtrar automaticamente por ese nombre las celdas de la base de datos como aparece en tu video. Ayuda por favor.

Juan Pablo Torres dijo...

Hola amigo, gracias por el comentario. Me alegra que lo intentes, si necesitas saber como funciona el código que utiliza podrías descargarte el ejemplo, el mismo que se muestra en el video, de la zona de descargar. Puedes probarlo e ir viendo que pasa con tu aplicación. Si tienes otra duda puedes escribir desde el formulario de contacto.
Sds
Link de descarga del ejemplo: http://goo.gl/cbXJr

Juan Pablo Torres dijo...

Hola amigo, gracias por el comentario. Me alegra que lo intentes, si necesitas saber como funciona el código que utiliza podrías descargarte el ejemplo, el mismo que se muestra en el video, de la zona de descargar. Puedes probarlo e ir viendo que pasa con tu aplicación. Si tienes otra duda puedes escribir desde el formulario de contacto.
Sds
Link de descarga del ejemplo: http://goo.gl/cbXJr

fred dijo...

excelente tutorial. tengo una duda cuando implemento tu ejemplo en una tabla de datos que tengo a la hora de buscar una persona sea por código o nombre las filas donde están todos los datos se desaparecen y no me muestra la busqueda, podrías por favor decirme como solucionarlo. gracias

Juan Pablo Torres dijo...

Hola Fred, cómo estas? Para que desaparezcan los datos debes usar condicionales, tanto formulas como formatos. Si quieres que ten enviemos el ejemplo así te guía para la solución de tu problema escríbenos a través del formulario de contacto. Saludos

Erika Lizethe Márquez Suárez dijo...

Hola.. Excelente tutorial
Tengo un problema, si quiero buscar pero ambas columnas son nombres; es decir por proveedor o por producto, pero no números.. En ese caso cómo debo hacer en la programación?
Gracias

Juan Pablo Torres dijo...

Hola Erika, cómo estas! La idea de este mini aplicación es justamente evitarnos el tema de recordar los códigos y poder ayudarnos con palabras claves dentro del texto. También se puede hacer como necesitas pero deberías hacer unas cuentas modificaciones. Si quieres puedes escribirnos mediante el formulario de contacto y te damos un par de ideas. Saludos

David dijo...

Buenas tardes, estoy ayudándome de su tutorial, adaptándomelo a mi trabajo.
es una base de datos con muchas imágenes, y a veces puede faltar alguna, y claro, me da error la macro, ¿como podría evitar ese error?
¿podría comprobar previamente si existe esa imagen y poner un "if" para saltar esa instrucción?
Muchas gracias de antemano por la respuesta y por esta página web, muy buena y útil

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por escribirnos!
En teoría se supone que si hay un dato hay una imagen asociada pero si quieres salvar el error lo puedes hacer con un if como dices sino hay sentencias que te permiten saltar el error pero tienes que tener cuidado porque si la usas mas puede ser contraproducente porque permite seguir ejecutando la macro. Un ejemplo es la sentencia "On Error Next" que lo pones arriba de todo el código y lo único que hace es seguir corriendo la macro si hay un error. Recuerda que nos puedes escribir directamente mediante el formulario del blog. Saludos

Joan dijo...

Este ejemplo no es bueno, es lo siguiente!!!
Muchísimas gracias!!!

Juan Pablo Torres dijo...

Hola, cómo estas! Gracias por tus comentarios JOAN.

Sds

Carlos de Jesús Salvide Pedraza dijo...

Hola, buenos días.

En verdad estoy muy interesado en este archivo, ya empece a diseñarlo, pero no encuentro como realizar la macro, es para un archivo de mi trabjo. Me podrias auxilar, te lo agradecería infinitamente!!

Juan Pablo Torres dijo...

Hola amigo, cómo esta! Gracias por escribir!
Revisa nuestro artículo de agenda con búsqueda que es básicamente lo mismo. También hay otros artículos con búsquedas. Saludos

Bruno Di Prinzio dijo...

Como haces para que se filtren los resultados??

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por comentar! En realidad esto ya lo habíamos visto en otros artículos por ejemplo el de la agenda con búsqueda, simplemente aquí usamos ese recurso y le agregamos otra cosa más. Revisa el blog que de seguro lo encuentras. Sino nos puedes escribir nuevamente o por aquí o por el formulario de contacto. Saludos

kevin cristhian dijo...

Oye, esta buenizimo! pero quiero hacer otra busqueda dentro de la hoja, como puedo variar el codigo si realizo otro campo de busqueda en la hoja, cree otro evento en la hoja pero creo que no funciona asi, me ayudarias bastante gracias hermano!

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Este método utiliza para buscar los filtros, ya lo hicimos en otro artículo (el de la agenda con búsqueda). Esta todo ahí, solo deberías agregar otro campo de búsqueda. Esperamos tus comentarios.
Saludos

Fabián Alarcón dijo...

Excelente aporte!!
Muchas gracias por facilitarnos el trabajo con esta plantilla, de hecho la he descargado pero tengo un error en la lectura de las imágenes. Me sale error de sintaxis, pero mi inexperiencia en macros no me ayuda a resolver el problema. Escribo parte del su código esperando pueda auxiliarme.

If WorksheetFunction.IsNumber(Range("c4").Value) Then

'filtro según el texto que quiero buscar
ActiveSheet.Range("$B$9:$D$29").AutoFilter Field:=2, Criteria1:="=*" & Range("c6").Text & "*"

archivo = Range("H6") & Range("C4").Text & ".bmp"

Image.Picture = LoadPicture(C:\Users\Diegoo\Downloads\POR CHECAR\Base de datos con imagenes en Excel\avatars los simpsons) "aquí me sale el error"

Else

Fabián Alarcón dijo...

Hola nuevamente....ya pude solucionar el problema anterior.
A pocas palabras, estaba escribiendo mal la ruta de los archivos de imágenes, al parecer no soporta formatos .jpg. Pero mi nueva duda es la siguiente, ¿Cómo poder hacer para que el tamaño de la imagen sea mayor? Debo incluirlo en la macro o cómo sería?
Gracias

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por los comentarios!
Recuerda que la plantilla es a modo referencial, en general , no recomendamos que la utilices directamente porque pierdes los conceptos. Primero es bueno ir utilizando partes de código e ir probando hasta incluir todo el código.
En este caso, es cierto, no te toma imágenes que no tengan el formato "bmp". El tamaño de la imagen lo arreglas con el tamaño del componente "image", lo agrandas y luego arreglas la imagen al tamaño que tome.
Esperamos tus comentarios.
Saludos

Jose Manuel Malave Guerra dijo...

Buenas noches amigo, desearía saber si me podría ayudar a encontrar una manera de crear una macro que me permita ubicar una celda (insertando anteriormente la cédula de un trabajador) y luego insertar unos datos en esa misma fila, pasando los datos que estaban en esta a otra fila. De antemano, muchas gracias. Y disculpe las molestias causadas.

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Ya te respondimos ese comentario en otra entrada.
Saludos

Wilian Romero dijo...

HOLA YO QUIERO SI ME PUEDES REGALAR EL MACRO COMPLETO Y UNA EXPLICACION CON RELACION A LA

If WorksheetFunction.IsNumber(Range("c4").Value) Then

'filtro según el texto que quiero buscar
ActiveSheet.Range("$B$9:$D$29").AutoFilter Field:=2, Criteria1:="=*" & Range("c6").Text & "*"

archivo = Range("H6") & Range("C4").Text & ".bmp"

Image.Picture = LoadPicture(archivo)

NO SE PORQUE NO ME FUNCIONA

Wilian Romero dijo...

con relación a la base de imágenes, pareceré no tan puntual, pero me gusta el excel y lo estoy entendiendo gracias

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por comentar!
En cuanto a tu consulta, revisa si definiste bien la ubicación del "archivo" dónde tienes la imagen y ten en cuenta las consideraciones que hicimos sobre ello ya que no se puede mostrar cualquier formato.
Por otro lado, el tema de búsqueda con filtro lo hemos visto también en otros artículos anteriores.
Esperamos tus comentarios.
Saludos

Kenneth Romano dijo...

Buenas noches, muy agradecido y contento por esta mini aplicación que en mi caso es muy buena para mi, la descargue y la estoy usando con una base de datos mucho mas grande y me funciona muy bien en cuanto a la consulta con nombres, pero cuando ingreso un numero me activa el filtro pero no muestra en numero solicitado, si me podría ayudar con eso se lo agradecería en grande

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por escribirnos!
En cuanto a tu consulta, ya las respondimos varias veces, es una cuestión de formulas solamente. Revisa la formula de "match" o "coincidencia" para que busque entre tus datos.
Esperamos tus comentarios.
Saludos