Macro para autofiltro con doble clic

¿Cuántas veces has escuchado de boca de tu jefe algo como “Venga!! Más rápido!! Necesito el informe para ayer!!”

Muchos de los informes que se crean dependen de un filtro que impide que se muestran datos no relevantes o incluso molestos en alguna ocasión.

Hoy te traigo una sencilla macro que, colocada en la hoja en la que se encuentren los datos que desees filtrar, te permitirá con un doble clic en el dato que necesites, filtrar todas las filas de la tabla.

 

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim rngTable As Range
Dim rngData As Range
Dim intColumn As Integer

    On Error Resume Next

    Application.ScreenUpdating = False
    Set rngTable = Range("Mi_Tabla")
    Set rngData = rngTable.Offset(1, 0).Resize(rngTable.Rows.Count - 1, rngTable.Columns.Count)

    If Not Application.Intersect(ActiveCell, rngData.Cells) Is Nothing Then
    ' Doble clic en los datos (sin incluir los encabezados de tabla

        intColumn = ActiveCell.Column - rngTable.Column + 1

        If ActiveSheet.AutoFilterMode = False Then
        ' Si el autofiltro está deshabilitado, se habilita
            rngTable.AutoFilter
        End If

        If ActiveSheet.AutoFilter.Filters(intColumn).On = True Then
            ' Si los datos están filtrados por esta columna, elimina el filtro
            rngTable.AutoFilter Field:=intColumn
        Else
            ' Si los datos NO están filtrados por esta columna, se crea el filtro
            rngTable.AutoFilter Field:=intColumn, Criteria1:=ActiveCell.Value
        End If

    End If

    ' Elimina datos
    Set rngData = Nothing
    Set rngTable = Nothing
    Application.ScreenUpdating = True

End Sub

Haz la prueba: Descárgate el archivo, pruébalo, y luego me cuentas.

 

filtro_doble_clic
Título: filtro_doble_clic (117 clics)
Tamaño: 19 KB

Cómo llegar a fin de mes con menos estrés gracias a Excel

Antes del día 15 puedes tener todos los objetivos mensuales completados. Y los que no, dejarlos programados para que se cumplan sin requerir de tu tiempo.

He preparado 7 de mis mejores trucos explicándote cómo lo hago. Deja tu correo abajo y te enviaré el primero de ellos.

21 comentarios en “Macro para autofiltro con doble clic”

  1. Estupenda implementación.
    Me ocurre que, en ocasiones, al seleccionar con doble click me quedan seleccionadas varias celdas de la columna, algunas de ellas vacías.

    ¿sabes porqué puede ser?.
    Gracias, febrero59

  2. Es una excelente aplicacion pero si se aplica sobre una tabla no funciona. Hay manera de solucionar esto? Gracias.

  3. Mi comentario por la selección de varias celdas con el doble click era un problema de mi propia hoja de cálculo.
    Disculpad.

    Saludos, febrero59

  4. Está genial, es super sencilla y una herramienta ágil en el caso de tener que ir filtrando por varios campos
    Muy agradecido.

  5. Lamento mucho el haber indicado que el enlace no permitía bajar el archivo, mas bien fue por problemas de configuracion del proxy. Al momento solventado mi inconveniente y la macro funciona tal cual lo esperaba. Saludos y adelante, ya que de este sitio bajo todas las macros que uso en mi trabajo.

  6. Joceline Ampuero

    Estimado,

    Esta macro es la que andaba buscando, sin embargo no me funciona, simplemente no hace nada en mi Hoja de Excel.

    Gracias de antemano.

    Saludos cordiales.

  7. quiero filtrar varios datos duplicados ej 55,55,55. 66,66,66

    y se filtre 55 y 66 a la vez

    1. Yesica, para ello tendrás que crear un filtro personalizado con el criterio “Empieza por”. Así lo solucionarás.

  8. Hector Hernández

    Buenas noches….

    tengo que activar filtros en varias hojas por lo regular en la fila a6, pero acorde al contenido del rango que esta en a5, no quiero que me ponga en toda la fila la opción de rangos. El rango donde se deben de activar los filtros es distinto por lo que hice lo siguiente
    For i = 1 To Sheets.Count
    Sheets(i).Activate
    Range(“a5”).CurrentRegion.Offset(1, 0).Select

    Next

    Sheets(1).Activate

    pero ahora que intento poner el filtro no se que hacer, ya que me selecciona el rango en cada hojas intente poniendo Range(“a5”).CurrentRegion.Offset(1, 0).autofilter…………..y si fuera una hoja si se activa el filtro, pero con más hojas me pone error

  9. Sergio buenos dias, muy simpatica la macro pero al probarla sobre una tabla de excel no funciona, toca quitarle los filtros primero antes del doble_click.

    como se podria solucionar este impase??.

    gracias de antemano

Los comentarios están cerrados.

Picture of Sergio

Sergio

Experto formador en Excel y Power BI con más de dos décadas de experiencia. Capacito a profesionales para optimizar su trabajo y ser más eficientes. Con un enfoque práctico y cercano, mi objetivo es ayudarte a dominar estas herramientas esenciales. Descubre mis formaciones.MVP de Microsoft 5 años consecutivos.

Cómo llegar a fin de mes con menos estrés gracias a Excel

Antes del día 15 puedes tener todos los objetivos mensuales completados. Y los que no, dejarlos programados para que se cumplan sin requerir de tu tiempo.

He preparado 7 de mis mejores trucos explicándote cómo lo hago. Deja tu correo abajo y te enviaré el primero de ellos.

Buscar

Últimos posts

¿De qué hablo aquí?

Cómo llegar a fin de mes con menos estrés gracias a Excel

Antes del día 15 puedes tener todos los objetivos mensuales completados. Y los que no, dejarlos programados para que se cumplan sin requerir de tu tiempo.

He preparado 7 de mis mejores trucos explicándote cómo lo hago. Deja tu correo abajo y te enviaré el primero de ellos.