Ícono del sitio Formulas Excel

Como hacer un buscador en excel

Tienes una enorme tabla de registros contables y necesitas buscar los información que coincida con cierto croterio, 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.

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.

Tutorial sobre como hacer un buscador en Excel

Actualización 14-11-2023

Ahora cualquier cosa que teclees se buscara en todas las columnas de la tabla.

Link de descarga al final del post.

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.

  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.

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.

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 buscador en excel

Salir de la versión móvil