Excel: macro para filtrar

Tips para que esta tarea tediosa sea sencilla y práctica.
SAB, 15 / JUN / 2013

Si solemos usar autofiltros para filtrar una lista y obtener los registros que correspon­den a un determinado criterio, sabemos que puede resultar un poco tedioso. ¿Podemos hacerlo de una manera más simple, por ejemplo escribiendo el cri­terio en una celda y haciendo clic en un botón para proceder con el filtrado? ¿O lo podemos lograr con una macro?

 

Aunque el uso de autofiltros es bastante simple, hay casos en los que una macro puede ayudar. Por ejemplo, tenemos una lista con nombre y valor. Activamos los autofiltros con [Datos/Filtro/Autofiltro]. Si escribimos un nombre en [B1], la siguiente macro filtra la lista de modo de mostrar los registros que tengan ese nombre en la primera columna:

 

Sub Filtrar()

criterio = [B1]

Selection.AutoFilter Field:=1, Criteria1:=criterio

End Sub

 

Si queremos algo más avanzado, pode­mos incluir una instrucción para que, cuando la celda [B1] esté vacía, la macro muestre todos los registros:

Sub Filtrar()

criterio = [B1]

If criterio = “” Then

Selection.AutoFilter

Else

Selection.AutoFilter Field:=1, Criteria1:=criterio

End If

End Sub

 

Al usar la instrucción Autofilter sin indicar el criterio, se cancela el filtrado y se muestran todos los registros de la lista.

 

Esta macro filtra la lista según el criterio indicado en la celda [B1]. Si está vacía, se cancela el filtrado y se muestran todos los registros.

Comentarios
¡Comparte esta noticia!

Últimos lanzamientos Ver más

18 Comments

  1. Javier Guevara dice:

    buenos días.

    alguien que me ayude cuando el filtro avanzado utilizando variables en los criterios me oculta todo , pero si utilizo escribiendo el rango si lo hace, necesito que lo haga utilizando variables.

    primfech = “>=” & Sheets(“Impr_Pedi”).Range(“c2”)
    ultifech = “=05/05/2019”,
    Criteria2:=”<=05/02/2020"

    Gracias.

  2. Hector Alcocer dice:

    ya encontré la solución con el alto de la columna cuando están filtradas es 0.
    ActiveSheet.Range(“A” & i).Height > 0

  3. Hector Alcocer dice:

    Como saber por medio de una macro si un registro esta visible es decir que no este filtrado. necesito manipular solo los datos que no han sido filtrados

  4. Marisol Ramos dice:

    Muchas gracias

  5. Juan Bustamante dice:

    Hola. como están?

    Quería preguntar ¿Como sería el autofiltro (en una macros) para este tipo de caso?
    Resulta que en una columna en particular tengo las iniciales

    GG
    GG-AP
    AN-GG-CH
    GGU

    Y necesito que me deje todos los casos que poseen el termino “GG” (descartando el GGU). Pero esto llevándolo a una forma general, por si se repite una situacion como esta…

  6. Juan Bustamante dice:

    Hola. como están?

    Quería preguntar ¿Como sería el autofiltro (en una macros) para este tipo de caso?
    Resulta que en una columna en particular tengo las iniciales

    GG
    GG-AP
    GG
    AN-GG-CH
    GGU
    (y varios valores mas, pero estos son los que mas me interesan)

    Y necesito que me deje todos los casos que poseen el termino “GG” (descartando el GGU). Pero esto llevándolo a una forma general, por si se repite una situación como esta con otros valores

  7. Alexis dice:

    buenas, como activo los autofiltros?

  8. jose ventura dice:

    con un combolist, las columnas que no quieras que aparezcan, ponles ancho 0pt

  9. julio cesar dice:

    hola como puedo automatizar con macros, el filtrado de cada área, luyego que se autoajuste el espacio de las celdas al contenido para que no queden ocultos datos en las celdas y luego que mande a imprimir area por area. porfavor si puedieran ayudarme…aqui les dejo una imagen de ejemplo. gracias de antemano.

  10. […] https://www.redusers.com/noticias/trucos/macro-para-filtrar/ Recuperado 23-03-2015 Por Alonso Dueñas Reducers Noticias Modificado Sábado, 15 de Junio de 2013 http://www.todoexcel.com/que-son-las-macros-excel/ Recuperado 23-03-2015 Recuperado Por Alonso Dueñas Todo En Excel […]

  11. Jesús David Prasca dice:

    Y… ¿si lo que quiero es filtrar con una parte del texto?, es decir si tengo un número 12001 entre los datos y mi criterio es 120, ¿Cómo haría para capturar ese filtro y encuentre ese dato cuya parte es el criterio?

  12. Santiago Villavicencio dice:

    El ejemplo me parece excelente, permite buscar un texto o valor exacto en la tabla fltrada, pero si por ejempo tengo uan lista de nombres y quiero que solo me filtre los que comiencen con el texto que escriba en la celda?

  13. Benjamin Fernandez dice:

    Hola, que pasa si quiero hacer un filtro exlusivo? Es decir, quiero hacer que me des-seleccione los “0s” y me deje todos los numeros mayores y menores a 0. Gracias!

  14. Alan dice:

    Sub Filtrar()
    Rows(“1:1”)
    Selection.AutoFilter Field:=1, Criteria1:=range(“b1”) , Criteria2:=range(“b2”)
    End Sub

  15. moises dice:

    un archivo, y mas especifica la pregunta

  16. Juan Castillo dice:

    Hola,
    Necesito una macros que me filtre columnas y no filas. Se puede hacer?
    Tengo una planilla con mas de 1000 filas y columnas hasta GQ.
    Entonces, Necesito hacer un filtro desde Z1, para la derecha hasta GQ1.
    Es posible hacerlo?
    Tengo muchos items y no tienen los mismos criterios, entonces siempre hay columnas demás.
    Es posible??

  17. Claudio H. Sánchez dice:

    En ese caso, tal vez, te convenga usar un filtro avanzado.

  18. Patricio dice:

    Hola
    como seria la macro si quiero que filtre por 2 criterios. Los criterios estan en B1 y B2 y son de una misma columna?
    Gracias
    Patricio
    [email protected]

Leave a Reply