Blog

21 de setembro de 2021

Como Classificar Dados com o Excel VBA

Olá, Programador! Neste post vou te mostrar como podemos classificar dados por macro no Excel através do VBA.

 

Para isso, vou apresentar três diferentes alternativas para realizarmos este procedimento.

 

Antes, vamos considerar a base de dados abaixo para o nosso exemplo:

 

Classificar Dados com Excel VBA

 

Como pode observar, esta é uma base simples de compras de insumos, que criamos dentro de um sistema de gestão para restaurantes.

 

Classificar Dados com Excel VBA – Nome do Insumo

 

O código que escrevemos para classificar os dados, de A a Z, pelo “Nome do Insumo” está escrito abaixo:

 

ActiveWorkbook.Worksheets("Compras").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Compras").Sort.SortFields.Add2 Key:=Range("C5:C18" _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets("Compras").Sort
.SetRange Range("B4:H18")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

 

Portanto, note que evidenciamos na segunda linha a matriz “C15:C18”, que é onde se encontra a coluna “Nome do Insumo”.

 

Além disso, utilizamos a ordenação “xlAscending” que representa justamente a classificação de A a Z em textos.

 

Assim, o resultado da tabela após a execução da macro seria este:

 

Classificar Dados com Excel VBA

 

Classificar Dados com Excel VBA – Custo Total

 

O código para ordenação do “Custo Total” é quase idêntico ao código para ordenação do “Nome do Insumo”. A diferença está na matriz evidenciada na segunda linha. Agora é a coluna “G” que está em questão, justamente a que contém as informações do “Custo Total”.

 

ActiveWorkbook.Worksheets("Compras").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Compras").Sort.SortFields.Add2 Key:=Range("G5:G18" _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets("Compras").Sort
.SetRange Range("B4:H18")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

 

Com isso, o resultado da execução desta macro seria uma planilha como está:

 

 

Entretanto, e se quiséssemos classificar a planilha e ordem descendente e não ascendente?

 

O código ficaria desta forma:

 

ActiveWorkbook.Worksheets("Compras").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Compras").Sort.SortFields.Add2 Key:=Range("G5:G18" _
), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Compras").Sort
.SetRange Range("B4:H18")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

 

Portanto, note que a única diferença entre este e o último código está na ordenação, que agora nos apresenta o código “xlDescending”.

 

Classificar Dados – Data + Custo Total

 

Seguindo para o nosso último exemplo, no VBA também podemos criar uma classificação personalizada, utilizando mais de um nível para classificação.

 

Neste exemplo, classificaremos os dados por Data, mas se houverem datas idênticas em nossa base, adicionaremos um segundo nível de classificação, por Custo Total.

 

Desta forma, o código ficaria assim:

 

ActiveWorkbook.Worksheets("Compras").Sort.SortFields.Clear

ActiveWorkbook.Worksheets("Compras").Sort.SortFields.Add2 Key:=Range("E5:E18" _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

ActiveWorkbook.Worksheets("Compras").Sort.SortFields.Add2 Key:=Range("G5:G18" _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets("Compras").Sort
.SetRange Range("B4:H18")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

 

Note, assim, que a segunda e a terceira linha representam os nossos dois níveis de classificação.

 

O resultado da execução da macro seria uma tabela como está:

 

 

Classificar Dados com Excel VBA – Método Manual

 

Por fim, para classificarmos a tabela de forma personalizada manualmente, iremos até a guia “Página Inicial”, cliquemos em “Classificar e Filtrar” e, em seguida, selecionaremos “Classificação Personalizada”.

 

 

Em seguida, adicionaremos os nossos dois níveis de classificação, desta forma:

 

Classificar Dados com Excel VBA

 

+ Macro para Copiar e Colar Valores em Outra Planilha

+ Como Copiar e Colar Fórmulas com o Excel

+ Macro que lista todas as abas de um Excel

 

Conclusão

 

Desenvolver sistemas que contenham formulários de inclusão em um banco de dados, exige que na parte final do código VBA, após a inclusão ou modificação dos dados, classifiquemos as informações para manter a organização do arquivo e dar suporte para eventuais validações de dados vinculadas ao nosso banco.

 

Isto foi feito, inclusive, no projeto sistema de RH que desenvolvemos para a Make Montanges.

 

Por fim, se precisar de qualquer ajuda com Excel, temos especialistas nos mais diferentes setores de atuação.

 

Conte sempre conosco!

 

Abraços!

Inscreva-se em nossa newsletter!