21

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 (1253 clics)
Tamaño: 19 KB

¡Compartir es vivir!
Sergio
 

La destreza y el perfeccionismo quizá sean las dos virtudes que me permiten ayudar a mis clientes a facilitar las tareas administrativas de sus negocios.

Haz clic aquí para dejar un comentario 21 comentarios
danilo

Excelente ejemplo
Saludos.
Danilo

Responder
Juan Luis DF

Esta implementación es una muy buena idea.
Saludos, Juan Luis DF.

Responder
febrero59

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

Responder
Paco

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

Responder
FEBRERO59

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

Responder
Carlos

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

Responder
ricardor1961

Saludos cordiales.- No se puede bajar el archivo de ejemplo. De que url se lo puede hacer.

Responder
    Sergio

    ricardor1961, el enlace es correcto. Acabo de descargarlo en mi equipo. ¿Qué error obtienes?

    Responder
ricardor1961

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.

Responder
Moises Guzman

Gracias por tu aporte es de gran ayuda para mi trabajos en excel

Responder
Milton c

Excelente ayuda, para volver a ver todos los datos podria darse clic fuyera del rango de datos
Gracias

Responder
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.

Responder
Marco

Excelente, se puede aplicar cuando es una Tabla?

Responder
    Sergio

    Claro que si, Marco. Una tabla no deja de ser un rango de celdas.

    Responder
YESICA

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

y se filtre 55 y 66 a la vez

Responder
    Sergio

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

    Responder
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

Responder
    Sergio

    Héctor, te recomiendo que entres en el foro de ayudaexcel y plantees ahí tu duda. Te responderemos enseguida. Gracias.

    Responder
abraham

Excelente aporte, MUCHAS GRACIAS

Responder
Renzo

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

Responder
LEO

EXCELENTE MACRO !!! SALUDOS.

Responder

Escribe una respuesta:

Powered by WishList Member - Membership Software