Filtrar columna con valores numéricos – Filtro rápido en Excel – Parte 3

Filtrar columna con valores numéricos - Filtro rápido en Excel - Parte 3

En este tercera parte de nuestro proyecto Filtro rápido en Excel respondo a una consulta que he recibido en varios comentarios, la cuales es cómo podemos filtrar valores de una columna si contiene números. Esto lo haremos incluyendo una nueva Casilla de verificación donde especifiquemos que la columna elegida es numérica.

Lo que hemos realizado

En la parte 2 de este proyecto incluimos la manera de poder elegir la columna a filtrar, además de poder hacer filtro buscando el texto ingresado desde el principio del texto en las celdas.

Filtrar valores eligiendo la columna a filtrar.

Figura 1. Filtrar valores eligiendo la columna a filtrar.

Para tener la opción de elegir si la columna a filtrar es numérica, deberemos de utilizar un nuevo control ActiveX  de tipo Casilla.

Ver Video Filtro rápido en Excel PARTE 3

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

Filtrar columna con números

Para filtrar una columna numérica deberemos insertar una nueva Casilla de verificación (ChechBox2), seleccionando la pestaña Programador > Insertar > Casilla (control ActiveX).

Control ActiveX de tipo Casilla de verificación.

Figura 2. Control ActiveX de tipo Casilla de verificación.

Para que el filtro en columna numérica funcione, deberemos asignarle a la variable criterio el texto que tengamos en el Cuadro de texto (TextBox1) que nos sirve para ingresar los valores.

Criterio = Hoja1.TextBox1.Value

Filtro rápido en acción

Para comprobar el filtro en columnas numéricas, es importante estar seguros que la columna contiene sólo números, ya que al seleccionar la Casilla donde especificamos que la columna contiene sólo números el filtro se aplicará sólo con texto completo, sin comodines.

Es importante tomar en cuenta que sólo podremos marcar una de las dos casillas y no las dos a la vez. Para lo anterior haremos uso del evento Click de cada Casilla y definir que si marcamos una, la otra de desmarcará en caso de que esté marcada.

'Casilla de verificación BUSCAR DESDE EL PRINCIPIO
Private Sub CheckBox1_Click()

If Hoja1.CheckBox1.Value = True Then: Hoja1.CheckBox2.Value = False

End Sub

'Casilla de verificación LA COLUMNA CONTIENE SÓLO NÚMEROS
Private Sub CheckBox2_Click()

If Hoja1.CheckBox2.Value = True Then: Hoja1.CheckBox1.Value = False

End Sub

Filtrando columna numérica en Excel con Filtro rápido.

Figura 3. Filtrando columna numérica en Excel con Filtro rápido.

Código VBA de la macro

Anexo el código VBA completo del proyecto Filtro rápido.

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

'Casilla de verificación BUSCAR DESDE EL PRINCIPIO
Private Sub CheckBox1_Click()

If Hoja1.CheckBox1.Value = True Then: Hoja1.CheckBox2.Value = False

End Sub

'Casilla de verificación LA COLUMNA CONTIENE SÓLO NÚMEROS
Private Sub CheckBox2_Click()

If Hoja1.CheckBox2.Value = True Then: Hoja1.CheckBox1.Value = False

End Sub

'Lista combinada para ELEGIR LA COLUMNA A FILTRAR
Private Sub ComboBox1_DropButtonClick()

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

End Sub

'Botón BORRAR FILTRO
Private Sub CommandButton1_Click()

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

End Sub

'Cuadro de texto para FILTRAR VALORES
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 & "*"
        
        ElseIf Hoja1.CheckBox2.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

Descargar el archivo de ejemplo

Descargar el ejemplo Filtro rápido en hoja PARTE 3 – 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...