Elegir la 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.
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.
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
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.
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.
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
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.