Dinâmica de filtragem do Excel 2010

0

Eu tenho uma grande tabela de dados que tem datas no topo. Isso tem filtros ativados. Preciso classificar esses dados (do maior para o menor) com base na data inserida em um campo definido pelo usuário. Mas eu não sei como fazer isso dinâmico.

Digamos que eu tenha 12 colunas com o mês no topo de cada uma e, em seguida, um conjunto de números abaixo. Se eu entrar em fevereiro em uma célula específica, então eu quero o Excel para classificar por fól colum de maior para menor. Se eu, em seguida, alterar a célula de fevereiro para maio eu quero classificar em dados de maio

Qualquer ajuda, por favor

    
por simon 28.05.2013 / 19:41

1 resposta

1

Pelo que entendi, você tem um conjunto de dados mensais que eu assumirei abrangendo de janeiro a dezembro, com os dados de cada mês listados em uma coluna separada e com uma célula de cabeçalho. Você deseja poder classificar esse conjunto de dados com base no maior para o menor valor em um mês específico, com o mês selecionado por uma entrada em uma célula na planilha.

Embora seja possível produzir uma exibição ordenada dos valores no conjunto de dados usando fórmulas de planilha, o próprio conjunto de dados não seria classificado e precisaria ser filtrado.

O uso do VBA permitirá uma abordagem consideravelmente mais simples, com o benefício adicional de poder manipular dados filtrados.

Suponho que a entrada do mês para classificar por será na célula A1 , que foi denominada sort_month . Os dados, incluindo um cabeçalho para nomes de meses, estão nas colunas B - M . O intervalo de dados é denominado filtered_data ; nos meus dados de exemplo, esse é o intervalo B1:M25 .

O código do VBA que fará a classificação é bem curto:

  Private Sub Worksheet_Change(ByVal Target As Range)
      If Not (Intersect(Target, Range("sort_month")) Is Nothing) Then
          Dim theMonth As Long
          theMonth = month(DateValue("01-" & Range("sort_month").Value & "-1900"))
          Range("filtered_data").Sort Key1:=Cells(1, theMonth + 1), _
              Order1:=xlDescending, header:=xlYes
      End If
  End Sub

Esta sub-rotina será executada automaticamente sempre que uma alteração for feita em sort_month (ou seja, célula A1 ). Faz sentido configurar a validação de dados nessa célula para garantir que apenas nomes de mês válidos ("Jan", "Feb", etc.) possam ser inseridos nessa célula.

O código não deve ser colocado em um módulo VBA padrão, mas deve ser anexado à planilha. O painel de código da planilha pode ser acessado clicando com o botão direito do mouse na guia da planilha e selecionando "View Code". O código pode então ser colado no painel.

Embora possa estar fora das suas necessidades, a tabela classificável pode ser facilmente configurada para uso geral (ou seja, não-desenvolvedor). A versão mostrada abaixo tem validação de dados suspensos para a entrada de mês, formatação de tabela adicionada para legibilidade e formatação condicional para destacar a coluna de classificação.

    
por 29.05.2013 / 23:43