Mostra as informações do filtro de coluna do Excel nas células

4

Temos uma planilha com um grande número de colunas e a filtragem costuma ser usada para navegar até os dados corretos. O problema é que às vezes não é óbvio que o filtro tenha sido aplicado, a sugestão visual é muito sutil. É possível mostrar alguns dados através de uma fórmula ou VBA sobre o filtro dentro de outra célula?

Algo parecido com isto:

Apenas saber se o filtro está ativo seria uma boa ajuda, saber quais colunas têm filtros ativos aplicados a eles seria cereja no topo do bolo. Idealmente, eles são atualizados automaticamente.

Eu não tenho propriedade da planilha, então não posso fazer grandes mudanças em sua estrutura ou qualquer outra coisa além do VBA é bom.

Alguma idéia?

    
por Alex 14.06.2012 / 07:48

1 resposta

4

Acredito que isso seja possível apenas com o VBA.

Eu também presumo que você não precisa verificar se o autofiltro está aplicado no intervalo correto (veja Leitura adicional), e que você não precisa verificar se o AUTOFILTER está ativo ou não (ou seja, sem setas, sem autofiltro).

Aqui está uma função definida pelo usuário que verifica se há algum filtro ativo em uma planilha e, se houver algum, exibe quais colunas foram filtradas. Tenho certeza de que há melhores funções lá fora; você pode precisar modificá-lo para atender às suas necessidades.

Function CheckFilters(r As Range) As String

Set AWS = ActiveSheet
fstate = ""

If AWS.FilterMode Then
    c = AWS.AutoFilter.Filters.Count

    'go through each column and check for filters
    For i = 1 To c Step 1
       If AWS.AutoFilter.Filters(i).On Then
            fstate = fstate & r(i).Value & ", "
       End If
    Next i

    'removes the last comma
    fstate = Left(fstate, Len(fstate) - 2) 
Else
    fstate = "NO ACTIVE FILTERS"
End If

CheckFilters = fstate

End Function

Para usá-lo, digite o ff. fórmula em uma célula vazia:

=CheckFilters(A3:E3)&LEFT(SUBTOTAL(9,A3:A48),0)

Em que A3:E3 contém os rótulos das colunas dos seus dados (veja o exemplo abaixo)

A parte &LEFT(SUBTOTAL(9,A3:A48),0) da fórmula não tem nenhum propósito visível além de forçar a célula a reavaliar "automaticamente" à medida que você altera os filtros. (Crédito para Sean Cheshire por sugerir isso). Observe que isso é melhor do que a solução descrita aqui porque ele recalcula somente quando o intervalo que você tem definido nas alterações dos seus parâmetros.

EXEMPLOS

Com filtros:

OAutoFiltroestáAtivado,masNenhumaColunafoiFiltrada:

Usado com formatação condicional:

LEITURAADICIONAL

Como usar AutoFiltros em Macros VBA do Excel
O objeto AutoFilter (referência de linguagem VBA do Excel 2003)

    
por 14.06.2012 / 20:31