Formulario de búsqueda inteligente y BUSCARV en Excel

En este artículo y video desarrollaremos un ejemplo en base a una consulta que me han hecho en diferentes ocasiones. Como sabes, la función BUSCARV es una de las funciones que más uso, de hecho, en el canal de YouTube tengo una Lista de reproducción dedicada a esta función tal útil. La lista tiene como nombre El poder de BUSCARV en Excel.

La pregunta que me han hecho se refiere a cómo uso la función BUSCARV, pero mostrando todos los elementos coincidentes e incluso repetidos. Es por eso que me di a la tarea de desarrollar un formulario de Excel vba donde tendremos un Textbox para escribir un nombre o apellidos y nos mostrarán todos los elementos que coincidan con esa búsqueda.

Cómo funciona

Tenemos un formulario en una hoja llamada Buscar. Dicho formulario tiene una sección donde podremos escribir un ID y mediante la función BUSCARV devolvemos los valores relativos a ese ID.

BUSCARV en Excel en base a un ID.

Figura 1. BUSCARV en Excel en base a un ID.

Ver video Formulario de búsqueda inteligente y BUSCARV en Excel

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Buscar por nombre y mostrar valores coincidentes

Pero qué sucede cuando la búsqueda no la queremos hacer por ID, sino por nombre o apellidos, además deseamos que si escribimos un nombre se muestren todos los nombres que se parezcan.

En la hoja Buscar del archivo de ejemplo tendremos una Tabla con nombres y detalles de cada nombre.

Tabla de nombres en Excel.

Figura 2. Tabla de nombres en Excel.

En la Figura 1 vemos un botón que dice Buscar por nombre. Si presionamos ese botón se mostrará un formulario de Excel vba donde tendremos un Cuadro de texto para escribir nombres o apellidos. Una vez en el formulario veremos un botón que dice Filtrar. Al presionar el botón Filtrar se mostrarán todos los elementos.

Filtrar los elementos coincidentes en Formulario de Excel vba.

Figura 3. Filtrar los elementos coincidentes en Formulario de Excel vba.

Usar BUSCARV para mostrar los valores de cada ID

Una vez que al escribir un nombre en el formulario y Filtrar los valores coincidentes, cada que elijamos uno de los elementos del ListBox verás como en el formulario de hoja Buscar se muestran los valores por cada ID.

Al elegir un elemento se devuelven valores usando BUSCARV en Excel.

Figura 4. Al elegir un elemento se devuelven valores usando BUSCARV en Excel.

Código del formulario

Usaremos el siguiente código vba (macro) para hacer funcionar el formulario.

'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh
'http://blogs.itpro.es/exceleinfo
'
Private Sub btnFiltrar_Click()
On Error GoTo Errores
'
If Me.txtFiltro1.Value = "" Or Me.txtFiltro1.Value = " " Then
'
    Me.ListBox1.Clear
    '
    Else
    Me.ListBox1.Clear
    j = 1
    Set HojaBase = ThisWorkbook.Sheets("Base")
    '
    Filas = HojaBase.Range("a1").CurrentRegion.Rows.Count
    For i = 2 To Filas
        If LCase(HojaBase.Cells(i, j).Offset(0, 1).Value) Like "*" & LCase(Me.txtFiltro1.Value) & "*" Then
            Me.ListBox1.AddItem HojaBase.Cells(i, j)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = HojaBase.Cells(i, j).Offset(0, 1)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = HojaBase.Cells(i, j).Offset(0, 6)
        Else
        End If
    Next i
End If
'
Exit Sub
Errores:
MsgBox "No se encuentra.", vbExclamation, "EXCELeINFO"

End Sub
'
'Pasar el ID del registro elegido a la celda D6
Private Sub ListBox1_Click()
'
Cuenta = Me.ListBox1.ListCount
Set Rango = Range("A1").CurrentRegion
For i = 0 To Cuenta - 1
    If Me.ListBox1.Selected(i) Then
        Valor = Me.ListBox1.List(i)
        Sheets("Buscar").Range("D6").Value = Valor
    End If
Next i
'
End Sub
'
'Dar formato al ListBox y traer datos de la tabla
Private Sub UserForm_Initialize()
'
With ListBox1
    .ColumnCount = 3
    .ColumnWidths = "40 pt;170 pt;60 pt"
End With
'
End Sub
'
'Cerrar formulario
Private Sub CommandButton2_Click()
Unload Me
End Sub

Artículos relacionados

Búsqueda inteligente en un formulario de Excel vba

Formularios para búsqueda, alta, baja y actualización de registros en Excel

Formulario de consulta en Excel con BUSCARV

Descarga el archivo de ejemplo

Descargar el ejemplo Formulario de búsqueda inteligente y BUSCARV en Excel.rar

También te podría gustar...