Elegir la columna a filtrar – Filtro rápido en Excel – Parte 2

Elegir columna a Filtrar - Filtro rápido en Excel - Parte 2

En esta segunda parte del Tutorial Filtro rápido en Excel, añadiremos dos características interesantes al ejemplos que desarrollamos en el la primera parte. Ahora lo que deseamos es además de poder filtrar de manera rápida y dinámica, también tengamos la oportunidad de elegir la columna en la cual deseamos aplicar el filtro y poder buscar desde el principio del texto.

Pasos previos

Para esta segunda parte trabajaremos con la misma tabla de datos de la primera parte, y modificaremos el archivo para añadirle nuevas características.

Filtro rápido en Excel Parte 1 - Filtrar mientras se escribe.

Figura 1. Filtro rápido en Excel Parte 1 – Filtrar mientras se escribe.

Para añadir las nuevas característica al Filtro rápido, necesitaremos añadir dos nuevos Controles ActiveX, los cuales se añadirán a la Hoja1 desde la pestaña Programador.

  • Un Cuadro combinado (ComboBox1) para mostrar las columnas del rango y elegir en la que se aplicará el filtro.
  • Una Casilla de verificación (CheckBox1) para tener la posibilidad de que la columna a filtrar se filtre con texto que coincida desde el principio.

Ver video Filtro rápido en Excel PARTE 2

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

Elegir la columna a filtrar

Para elegir la columna a filtrar usaremos un Cuadro combinado, el cual lo insertaremos desde la pestaña Programador > Insertar > Controles ActiveX > Cuadro combinado.

Insertamos un ComboBox para mostrar las columnas del rango.

Figura 2. Insertamos un ComboBox para mostrar las columnas del rango.

Para mostrar los encabezados de las columnas en el ComboBox1 se requiere estar en Modo Diseño para entrar al código del Control.

  • Ficha Programador > Modo Diseño.
  • Doble clic en el ComboBox1.
  • Se mostrara el evento ComboBox1_Change.
  • En la parte superior derecha elegimos de la lista de eventos el que se llama DropButtonClick para rellenar el ComboBox1 con los encabezados del rango cada vez que damos clic en el botón para desplegar la lista.

Una vez que tengamos el evento DropButtonClick ingresamos el siguiente código que nos servirá para rellenar el ComboBox1 con los encabezados de la tabla.

Private Sub ComboBox1_DropButtonClick()

Hoja1.ComboBox1.List = Application.Transpose(Hoja1.Range("A9").CurrentRegion.Resize(1).Value)

End Sub

Con el evento DropButtonClick ejecutamos una macro al momento de desplegar los valores del ComboBox.

Figura 3. Con el evento DropButtonClick ejecutamos una macro al momento de desplegar los valores del ComboBox.

Filtro de texto “Comienza por”

Así como podemos filtrar columnas con la opción de que la búsqueda del texto sea desde el principio, a este Filtro rápido le añadiremos una Casilla de verificación (CheckBox1) para tengamos la posibilidad de marcarla si deseamos buscar el texto desde el principio. La insertaremos desde la pestaña Programador > Insertar > Controles ActiveX > Casilla.

Casilla de verificación para aplicar filtro buscando texto desde el principio.

Figura 4. Casilla de verificación para aplicar filtro buscando texto desde el principio.

Filtro rápido en acción

En esta segunda parte la lógica será que primero elegimos la columna a filtrar y opcionalmente marcamos la Casilla para indicar que deseamos buscar desde el principio, para finalmente comenzar a escribir el texto y ver la magia.

Filtro rápido en Excel eligiendo la columna a filtrar.

Figura 5. Filtro rápido en Excel eligiendo la columna a filtrar.

Código VBA de la macro

En el evento Change del TextBox1 le agregamos la validación para que reconozca si marcamos la Casilla para buscar desde el principio, además modificar el Autofiltro para que la columna la tome de lo que elijamos en el ComboBox1.

'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh
'http://blogs.itpro.es/exceleinfo
'
Option Explicit
'
Private Sub TextBox1_Change()

Dim Criterio As String
Dim Columna As Integer

    If Hoja1.TextBox1.Value <> "" Then
        
        If Hoja1.ComboBox1.Value = "" Then Exit Sub
        
        If Hoja1.CheckBox1.Value = True Then
        
            Criterio = Hoja1.TextBox1.Value & "*"
        
        Else
        
            Criterio = "*" & Hoja1.TextBox1.Value & "*"
        
        End If
        
        Columna = Hoja1.ComboBox1.ListIndex + 1
        Range("A9").CurrentRegion.AutoFilter Field:=Columna, Criteria1:=Criterio
    
    Else
        Criterio = ""
        Range("A9").CurrentRegion.AutoFilter
    End If
    
End Sub

Añadimos el evento ComboBox1_DropButtonClick para rellenar los valores de los encabezados en el mismo ComboBox.

Private Sub ComboBox1_DropButtonClick()

Hoja1.ComboBox1.List = Application.Transpose(Hoja1.Range("A9").CurrentRegion.Resize(1).Value)

End Sub

También modificamos el código vba del botón Borrar filtro para limpiar el TextBox1, el ComboBox y el CheckBox1.

Private Sub CommandButton1_Click()

Range("A9").CurrentRegion.AutoFilter
Hoja1.TextBox1.Value = ""
Hoja1.CheckBox1.Value = False
Hoja1.ComboBox1.Value = ""

End Sub

Descarga el archivo de ejemplo

Descargar el ejemplo Filtro rápido en hoja PARTE 2 – EXCELeINFO.zip

Si te gustó este tutorial por favor anótate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.

You may also like...