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.