Formulas Excel

Ejemplos de Formulas Excel

  • Home
  • Apps
    • Formas de Pago
    • Activacion
    • Configurar
    • Fallas
  • Sobre mi
  • Contacto
  • FAQ
  • Consulta

Como hacer un buscador en excel

por Nolberto Lopez 30 Comments

Tienes una enorme tabla de registros contables y necesitas buscar los registros que coinciden con cierto texto, un Buscador en Excel es la solución, en este caso mediante el uso de filtro avanzado con VBA, la idea es que al teclear, de manera automática se muestren solo los registros que coinciden con lo tecleado.

Plantillas Contables en Excel

Como hacer un buscador en excel para contactos

En este ejemplo veremos como hacer un buscador en excel mediante vba, esto con el fin de poder hacer búsquedas rápidas en una tabla de contactos.

buscador-excel-vba-contactos

Tutorial sobre como hacer un buscador en excel

https://youtu.be/DWDYtU5UC7Y

Definir rango de criterios

Para el filtro avanzado, necesitamos definir un rango de criterios, en este caso el rango sera B2:B3

Para esto hacemos lo siguiente:

  1. Click en la pestaña “formulas”, en la cinta de opciones de excel
  2. Click en administrador de nombres
  3. Click en nuevo
  4. tecleamos el nombre deseado, en este caso “Criterios”
  5. Damos click el el botón “se refiere a:” y seleccionamos el rango de celdas B2:B3
  6. Aceptar.

Definir rango de datos a filtrar

El rango de datos a filtrar es la tabla que contiene la informacion de los contactos, en este caso también le daremos un nombre como en el paso anterior, pero como esta tabla ira creciendo con los nuevos registros, es importante que el nombre que definamos tome de manera automática esos datos nuevos.

  1. Click en la pestaña “formulas”, en la cinta de opciones de excel
  2. Click en administrador de nombres
  3. Click en nuevo
  4. tecleamos el nombre deseado, en este caso “Datos”
  5. En el campo “se refiere a:” ponemos esta formula =DESREF(Contactos!$A$6,,,CONTARA(Contactos!$A$6:$A$1048576),5)
  6. Aceptar.

Para mas informacion sobre este ultimo caso, puedes ver el post sobre listas y rangos dinámicos que publique hace tiempo.

Código VBA para el filtro avanzado

El siguiente código es el que filtrara los datos cuando se teclee algo en la celda B3

Option Explicit

Sub FiltraDatos()
  Range("Datos").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("Criterios"),   Unique:=False
End Sub

Si vemos el código, en este se hace uso de los nombres de rango que se definieron anteriormente.

Programar evento que se ejecutara al momento de cambiar la celda B3

Para que el código anterior se ejecute al hacer un cambio en B3, es necesario programar el evento Change en la hoja de datos.

Para esto damos click derecho en la pestaña con el nombre de la hoja de datos/ ver código, en la ventana que sale ponemos este código.

Private Sub Worksheet_Change(ByVal Target As Range)
  Application.ScreenUpdating = False
  On Error GoTo casoerror
  If Target.Address = "$B$3" And Target.Value <> "" Then
    Call FiltraDatos
  End If

  If Target.Address = "$B$3" And Target.Value = "" Then
    ActiveSheet.ShowAllData
  End If

  Application.ScreenUpdating = False
  Exit Sub

  casoerror:
  Application.ScreenUpdating = False
End Sub

Lo que hace el código anterior es básicamente comprobar si la celda que se esta modificando es B3, en ese caso se ejecuta la función de filtrado, si al modificar la celda B3 se esta borrando el texto, se debe mostrar de nuevo toda la informacion de la tabla, es decir, se elimina el filtro aplicado.

Ejecutar filtro al teclear

Hasta el código que tenemos ahora, el filtro se ejecuta luego de dar enter al estar tecleando en B3, pero también es posible que el filtro se genere automáticamente con cada tecleo en B3, es decir, de ese modo los datos que coinciden se van mostrando conforme se va tecleando.

Para lograr esto, ponemos un cuadro de texto justo encima de B3.

vba-textbox

  1. Click en la ficha “Desarrollador”
  2. Insertar
  3. En la seccion de Controles Activex, damos click en Cuadro de texto
  4. Dibujar cuadro de texto encima de B3

Luego de dibujar el cuadro de texto, dar click derecho sobre el/ ver código y escribimos lo siguiente:

Private Sub TextBox1_Change()
  Range("B3") = TextBox1
End Sub

Finalmente vamos a la hoja excel y desactivamos el modo diseño en la ficha “Desarrollador”

Con ese código, cada vez que tecleamos en el cuadro de texto, eso mismo se repetirá en la celda B3, lo cual luego hace que se ejecute el filtro.

buscador-excel-vba-filtro-textbox

Uso de comodín para buscador en excel

Es probable que tengas una gran tabla de datos y no estés seguro de como aparece el dato buscado, pero si recuerdas parte del mimos, para estos casos puedes usar el * justo al inicio del texto buscado, de ese modo se filtraran los registros que contenga ese texto, esto sin importar en que parte de la cadena se encuentra.

vba-filtro-comodin

Como puedes ver, con muy poco código es posible crear un potente buscador en excel con el uso de filtro avanzado y VBA.

descargar

Categoría: Videotutoriales

Ingresa tu e-mail:

About Nolberto Lopez

Experto en Microsoft Excel. Desarrollador de aplicaciones en Excel con VBA. Autor del sitio formulasexcel.com

« Suscripción de por Vida AppsFX
Descargar Apps Contables en Excel »

Comentarios

  1. Mario Herrera dice

    noviembre 27, 2020 at 8:18 pm

    Gracias por estos conocimientos MUY UTILES
    Un Saludo desde El Salvador.

    Responder
  2. Julian dice

    octubre 14, 2020 at 3:42 pm

    Hola: Buenos días. Me anda muy bien. Lo unico que me gustaria mejorar es cuando los nombres estan compuestos, es decir nombre y apellido por ejemplo ” Mario Ribotric” si tipeo Ribotric no me lo busca.
    Muchas gracias

    Responder
  3. Miguel dice

    julio 7, 2020 at 9:45 am

    Buenas noches, no funciona si reemplazo los nombres por números. Ejm reemplazo un nombre por este 1345-2019 y luego le pongo buscar pero no lo encuentra.

    Responder
  4. hector dice

    mayo 27, 2020 at 4:18 am

    tremendo trabajo el que haz realizado.

    Mi consulta va en como se podrían agregar columnas / o modificar las que existen para que las incluya en la busqueda?

    Responder
  5. Sandra Giraldo dice

    mayo 21, 2020 at 3:27 pm

    Hola, como estas.
    esta super esta herramienta, quisiera saber como puedo hacer, para tener dos opciones de buscador en la misma hoja, es decir que pueda buscar por un criterio u otro. Como en el ejemplo que pones, pero que pudiera decidir si quiero buscar por nombre o por ciudad por ejemplo.
    quedo atenta, mil gracias!

    Responder
  6. Joel Contreras dice

    abril 11, 2020 at 9:28 pm

    Buenas tardes Nolberto Lopez,

    De antemano agradezco mucho la ayuda que proporcionas con esto me ha sido muy funcional, si de algo sirve… En la celda B2, tiene que escribir el nombre de la columna que van a utilizar para la búsqueda.
    Saludos

    Responder
  7. Alejandro Hernández dice

    abril 2, 2020 at 11:06 am

    Excelente aporte, funciona perfectamente no obstante tengo una consulta.
    Tengo dos hojas una para Clientes y otra para Productos, he creado un buscador para cada hoja pero en la segunda que he creado con el mismo proceso que la primera me dá un error:

    Se ha detectado un nombre ambiguo “FiltrarDatos”.

    Sale dentro del código:
    Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False
    On Error GoTo casoerror
    If Target.Address = “$G$5” And Target.Value “” Then
    Call FiltraDatos
    End If

    Responder
  8. Luis dice

    marzo 21, 2020 at 4:03 pm

    Hola! tengo el problema que al ingresar texto en la TextBox, solo me muestra la primer fila de la tabla… Alguna solucion?

    Responder
    • Agustin dice

      septiembre 29, 2020 at 7:01 pm

      Me pasa lo mismo, alguna solucion?

      Gracias!

      Responder
  9. Andrés G dice

    marzo 5, 2020 at 9:26 am

    Buenas lo he realizado todo y me hace el filtro avanzado pero solo muestra la primera fila de la tabla, sea cual sea el criterio a buscar. Podrías orientarme??

    Responder
    • Nolberto Lopez dice

      marzo 6, 2020 at 4:37 pm

      Abría que ver su código, mi sugerencia es que descargue el ejemplo de esta pagina.

      Responder
  10. Alfredo dice

    febrero 7, 2020 at 5:07 am

    No se ejecuta y me dice error 1004 range de objeto global, como lo soluciono

    Responder
    • Nolberto Lopez dice

      febrero 10, 2020 at 7:07 pm

      Saludos Alfredo.

      Aquí seria importante que comparta su código y también indicar en que linea le da el error.

      Responder
  11. jhonathan dice

    enero 31, 2020 at 7:52 pm

    Excelente aporte, yo lo hice con mas datos. Lo que no encontré es la manera de proteger los datos. Solo dejar visible y editable el botón.

    Responder
  12. Juan Pablo Humani dice

    septiembre 25, 2019 at 2:58 pm

    Hola buenos días como estas todo bien? Estoy intentando utilizar este buscador para un archivo que es un padrón de impuestos de Argentina. Un ejemplo de fila sería:

    22082019 1092019 30092019 20000163989 D S N 0,00 0,00 0 0

    Lo que quiero es un buscador para ingresar valores que aparecen en la columna 3 y que devuelva el valor de la 7 o sino la fila completa.

    Desde ya espero tu respuesta. GRACIAS!!!

    Juan Pablo

    Responder
  13. gregorio dice

    agosto 21, 2019 at 2:52 pm

    Sigo los pasos y no me corre el aplicativo en excel al seleccionar un nombre y dar enter en B3, agradezco el apoyo por favor que me puedas brindar, incluso lo hice con solo tres contactos y nada…

    Saludos…

    Responder
    • carlos dice

      septiembre 11, 2019 at 7:06 pm

      Hola amigo revisa tus variables, si lo estas realizado con el mismo nombre como en el video, podrias enviar tu imagen para que pueda ayudarte

      Responder
    • Nolberto Lopez dice

      septiembre 13, 2019 at 2:44 pm

      Saludos Carlos.

      Sin ver el código que usted escribió no hay manera de saber donde esta el problema.

      Evidentemente lo que usted debe hacer ahora es seguir de nuevo todo el proceso.

      Otra opción es que descargue el ejemplo.

      Responder
  14. Mario Medina dice

    julio 22, 2019 at 2:51 pm

    Hola buenas, estoy intentando hacer el buscador, pero al efectuar el filtro, no filtra lo que estoy escribiendo solo me aparece la primera fila de la bases de datos que tengo, o sea solo el primer dato.
    agradeceria si me pudiera ayudar.

    Responder
    • Patricia dice

      octubre 7, 2020 at 9:50 pm

      A mi me pasó lo mismo y he visto que a mucha gente también pero ya he descubierto la solución. Me rompí la cabeza analizándolo todo (código, funciones, nombre de hoja, etc) una y otra vez sin ver el video.

      El problema no está ni en el código ni en la función DESREF utilizada en la asignación de nombres, sino en un pequeño detalle que se nombra en el video como de pasada y que no está escrito en esta entrada: la celda B2 situada encima del TextBox tiene que coincidir con el título de la columna en la que se hace la búsqueda.

      Esta es la clave. Espero haya servido de ayuda a alguien 😉

      Responder
  15. Marcos dice

    junio 24, 2019 at 5:43 pm

    Buenos dias, al filtrar no me va mostrarndo los resultados conforma escribo, solo me muestra el resultado concreto al terminar de escribir. Gracias

    Responder
  16. Oscar molina dice

    abril 20, 2019 at 7:22 pm

    hola quiero consultar si se puede concatenar el filtrado de varias hojas o todo el libro gracias…

    Responder
  17. esegovia dice

    septiembre 21, 2018 at 9:03 pm

    Gracias por tan útiles tips. Saludos.

    Responder
  18. LUIS M. HERNANDEZ dice

    septiembre 10, 2018 at 4:55 am

    HOLA, MAGNIFICO Y LO DESCARGUE PERO AL AMPLIAR LOS RENGLONES A MAS DE 4000, SE PONE MUY LENTO Y NO REGRESA AL PRIMER RENGLON.

    PODRIAS DECIRME QUE NO ESTOY HACIENDO BIEN? GRACIAS

    Responder
  19. Ismael dice

    septiembre 7, 2018 at 5:55 pm

    Muchas gracias… excelente aporte, se podrá agregar mas de un filtro avanzado en la misma hoja??

    Responder
  20. Adrian Bonfrisco dice

    abril 4, 2018 at 3:53 pm

    Buenas.
    Muchas gracias por las ayudas en esta pagina y los tips.
    Estoy intentando armar el buscador en una lista de precios.
    Cuando quiero definir el rango de los datos a filtrar, me tira un error en la formula.
    A continuación te dejo mi formula: =desref(Precios!$A$5,,,contara(Precios!$A$5:$A$500),6)

    Cuando al error le doy aceptar, me deja pintado esto ” $A$5,,,contara “.

    He probado mil cosas, y no logro que me la acepte. Capaz me puede ayudar.
    Utilizo Excel 2010.

    Muchas gracias desde ya.

    Responder
    • Santiago dice

      febrero 28, 2019 at 3:49 pm

      Tienes que utilizar ; en lugar de ,

      Responder
  21. Hugo Salinas dice

    marzo 29, 2018 at 11:27 pm

    Que tal ingeniero, muy buen aporte, tengo una duda, al realizar el ejemplo me sale este error

    Run time Error ‘1004’
    Method ‘Range’ of object ‘_Global’ failed

    Cree una base de datos propia y tanto la columna de datos como la celda de criterios la llame igual que en tu ejemplo, entonces al insertar el modulo y correr mi programa no funciona y me envía el error señalado
    el código es claro el mismo que tu pusiste

    Sub FiltraDatos()
    Range(“Datos”).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range(“Criterios”), Unique:=False
    End Sub

    Responder
  22. Danilo dice

    diciembre 18, 2016 at 12:11 am

    Excelente ejercicio.
    Gracias por compartir tus AMPLIOS conocimientos.
    Saludos!!!!
    Danilo

    Responder
  23. Danilo dice

    octubre 20, 2016 at 9:16 pm

    Excelente ejercicio.

    Como siempre no dejas nada para las dudas.
    Danilo

    Responder

Deja un comentario Cancelar respuesta

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

Ponte en contacto conmigo para definir detalles de tu nuevo proyecto.

Contactar
  • INICIO
  • CONTACTO
  • APLICACIONES
  • CONTABLES
  • VIDEOS
  • CATEGORIAS
  • VBA EXCEL

Copyright © 2021 · Formulas Excel · by Nolberto Lopez

Copyright © 2021

Ingresa tu e-mail: