viernes, octubre 08, 2010

Mostrar los criterios de Autofiltro en una celda

Una de las funcionalidades más populares de Excel es el Autofiltro. Con esta herramienta podemos filtrar una tabla de acuerdo criterios lógicos aplicados a los valores de una o más columnas de la tabla.
Un lector me consulta cómo se puede hacer para que el criterio aplicado aparezca en una celda por encima del encabezamiento de la columna. Por ejemplo, partiendo de esta lista



ver en las celdas correspondientes de fila 2 los criterios aplicados para filtrar la lista



Como puede verse, estamos usando una función definida por el usuario (UDF).

Esta función fue desarrollada por el guru de Excel Stephen Bullen.

Para poder usar esta función tenemos que poner este código en un módulo común del editor de Vba, preferentemente en el Personal.xlsb (Personal.xls en Excel 97-2003)

Function FilterCriteria(Rng As Range) As String
    'By Stephen Bullen
    Dim Filter As String
   
    Application.Volatile True
    Filter = ""
    On Error GoTo Finish
    With Rng.Parent.AutoFilter
        If Intersect(Rng, .Range) Is Nothing Then GoTo Finish
        With .Filters(Rng.Column - .Range.Column + 1)
            If Not .On Then GoTo Finish
            Filter = .Criteria1
            Select Case .Operator
                Case xlAnd
                    Filter = Filter & " y " & .Criteria2
                Case xlOr
                    Filter = Filter & " o " & .Criteria2
            End Select
        End With
    End With
Finish:
    FilterCriteria = Filter
End Function


Esta función utiliza un único argumento, "Rng", que es cualquier celda de la columna sobre se aplica el Autofiltro.

Hay que tener en cuenta que esta función fue desarrollada antes de la aparición de Excel 2007. Por ejemplo, si elegimos más de dos criterios en una misma columna, por ejemplo ver las zonas Norte, Sur y Oeste, la función no podrá mostrar el criterio aplicado



Tip: en Excel 2007, al apuntar con el mouse al icono del autofiltro podemos ver una ventanilla que nos muestra los criterios aplicados (como en la imagen de arriba).

5 comentarios:

  1. Simplemente perfecto!

    ResponderBorrar
  2. Muy bueno! En algunos casos es útil, aunque no recuerde ninguno, pero nunca se sabe jaja..

    ResponderBorrar
  3. Hola Jorge,
    ¿Hay alguna forma fácil de modificar el código de la función para que limpie las celdas cuando se usa la opción Mostrar Todo? Es que en este caso no deja las celdas en blanco.
    Un saludo,
    Sergio

    ResponderBorrar
  4. El problema aparece en Excel 2003 (no en Excel 2007). Por lo visto Excel no recalcula la hoja cuando se elige la opción "mostrar todo", aún cuando hayamos defiinido la función como volátil.
    En cuanto encuentre una solución, si la encuentro, la estaré publicando.

    ResponderBorrar
  5. Por supuesto, se puede apretar F9 para forzar la recalculación.

    ResponderBorrar

Nota: sólo los miembros de este blog pueden publicar comentarios.