Classificação do VBA do Excel

Existem diferentes maneiras de classificar os dados no Microsoft Excel. Há um ícone de classificação na faixa de opções da guia Dados do Excel, de onde você pode classificar seus dados rapidamente e obter os resultados. Por que é necessário escrever o código VBA complexo então?

Você precisa manter isso sempre em mente, pois os códigos VBA existem para automatizar as coisas. Suponha que você tenha dados atualizados de vez em quando. Talvez todos os dias, semanalmente, mensalmente, etc., e você precise de seus dados de maneira específica. Nesses casos, a função VBA SORT pode ser usada e será uma ferramenta útil para sua referência.

O VBA possui um método Range.Sort para classificar os dados para você. Where Range especifica o intervalo de células que queremos classificar em ordem crescente ou decrescente.

A sintaxe para Range.Sort é a seguinte:

Onde,

  • Chave - coluna / intervalo que você precisa classificar. Ex. Se você deseja classificar as células A1: A10, mencione Intervalo (A1: A10)
  • Ordem - Este é o parâmetro que permite classificar os dados em ordem crescente ou decrescente.
  • Cabeçalho - Este é o parâmetro que especifica se sua coluna / intervalo tem cabeçalhos ou não.

Esses três parâmetros são suficientes para nossos procedimentos. No entanto, existem outros parâmetros, como MatchCase, SortMethod, etc., que você pode sempre explorar e ver como eles funcionam.

Como usar a função de classificação Excel VBA?

Vamos aprender como a classificação do VBA pode ser usada para classificar a coluna sem cabeçalhos, uma coluna com cabeçalhos e várias colunas com exemplos no excel.

Você pode fazer o download deste modelo do Excel VBA Sort aqui - Modelo do VBA Sort Excel

Função de Classificação VBA - Exemplo # 1

Classificando coluna única sem cabeçalho

Suponha que você tenha uma coluna com nomes como mostrado abaixo e tudo que você precisa é classificar esses dados em ordem alfabética em ordem crescente ou decrescente.

Siga as etapas abaixo para usar a função Classificar no VBA.

Etapa 1: defina um novo procedimento sup em um módulo e crie uma macro.

Código:

 Sub SortEx1 () End Sub 

Etapa 2: Use a função Range.Sort para poder classificar esta coluna em ordem crescente.

Código:

 Sub SortEx1 () Intervalo ("A1", Intervalo ("A1"). End (xlDown)). Sort End Sub 

Aqui você está dando um intervalo que começa na célula A1 até a última célula usada / não vazia (consulte a função .End (xlDown)) na função Range.Sort.

Etapa 3: Agora, insira os valores do argumento.

Código:

 Sub SortEx1 () Intervalo ("A1", Intervalo ("A1"). Fim (xlDown)). Chave de classificação1: = Intervalo ("A1"), Ordem1: = xlAscending, Header: = xlNo End Sub 

Como discutimos anteriormente, Key, Order e Header são os argumentos importantes e necessários a serem fornecidos. Atribuímos Range ("A1") como o intervalo inicial da coluna que precisamos ordenar. O pedido é fornecido como Crescente e o Cabeçalho como Não (o que significa que a coluna não possui cabeçalho).

Esse código verificará todas as células não vazias a partir da A1 e as classificará em ordem crescente a partir da célula A1.

Etapa 4: execute esse código pressionando F5 ou o botão Executar manualmente e veja a saída.

Se você puder comparar isso com a imagem no início deste exemplo, poderá ver que os nomes são classificados em ordem crescente.

Função de Classificação VBA - Exemplo # 2

Classificando uma única coluna com cabeçalho

Suponha que você tenha uma coluna com o cabeçalho, como mostrado abaixo. E você queria classificar esta coluna em ordem crescente ou decrescente.

Siga as etapas abaixo para usar a função Classificar no VBA.

Etapa 1: defina um novo subprocedimento sob um novo modelo para armazenar a macro.

Código:

 Sub SortEx2 () End Sub 

Etapa 2: Use o Planilhas ("Exemplo 2") para especificar em qual planilha seus dados são.

Código:

 Sub SortEx2 () Folhas ("Exemplo # 2") End Sub 

Etapa 3: Use Range ("A1"). Classifique na frente da linha de código acima para torná-la uma função de classificação.

Código:

 Sub SortEx2 () Folhas ("Exemplo # 2"). Range ("A1"). Sort End Sub 

Etapa 4: forneça Key1 como intervalo ("A1") para classificar os dados da célula A1, Order1, a fim de classificar os dados em ordem crescente ou decrescente, e Header como Yes para informar ao sistema que a primeira linha está no cabeçalho do seu dados.

Código:

 Sub SortEx2 () Sheets ("Example # 2"). Range ("A1"). Sort Key1: = Range ("A1"), Order1: = xlAscending, Header: = xlSim End Sub 

Etapa 5: execute esse código pressionando F5 ou o botão Executar manualmente e consulte a saída.

Aqui, os dados do Exemplo 2 da pasta de trabalho do Excel são classificados em ordem crescente, uma vez que possuem um cabeçalho. O que significa que, ao classificar esses dados, a primeira linha (que contém o Nome Emp ) é negligenciada porque é considerada um cabeçalho para esses dados na coluna A.

Você também pode classificar os mesmos dados em ordem decrescente de alfabetos. Tudo o que você precisa fazer é alterar a ordem de ascendente para descendente.

Etapa 6: altere order1 para decrescente para classificar os dados em ordem decrescente.

Código:

 Sub SortEx2 () Sheets ("Example # 2"). Range ("A1"). Sort Key1: = Range ("A1"), Order1: = xlDescending, Header: = xlYes End Sub 

Etapa 7: Execute o código e veja a saída conforme abaixo.

Você pode ver que os dados estão classificados em ordem decrescente.

Função de Classificação VBA - Exemplo # 3

Classificando várias colunas com cabeçalhos

Até agora, abordamos como classificar os dados de uma única coluna em ordem crescente ou decrescente (sem cabeçalho e com cabeçalho). E se você tiver dados que você precisa classificar com base em várias colunas? É possível escrever um código para o mesmo?

A resposta é: "Sim, certamente isso pode ser feito!"

Suponha que você tenha dados como dados abaixo:

Você queria classificar esses dados primeiro pelo nome do Emp e depois pelo local. Siga as etapas abaixo para ver como podemos codificá-lo no VBA.

Etapa 1: defina um novo subprocedimento para adicionar uma macro em um novo módulo.

Código:

 Sub SortEx3 () End Sub 

Etapa 2: use uma instrução With… End With para adicionar várias condições de classificação em um único loop.

Código:

 Sub SortEx3 () Com ActiveSheet.Sort End Sub 

Etapa 3: Agora, use SortFields.Add para adicionar as várias condições de classificação na mesma planilha.

Código:

 Sub SortEx3 () Com a chave ActiveSheet.Sort .SortFields.Add: = intervalo ("A1"), ordem: = xlAscending .SortFields.Add chave: = intervalo ("B1"), ordem: = xlAscending End Sub 

Etapa 4: Decida o intervalo da folha a ser classificado e o cabeçalho Na próxima etapa.

Código:

 Sub SortEx3 () Com a chave ActiveSheet.Sort .SortFields.Add: = intervalo ("A1"), ordem: = xlAscending .SortFields.Add chave: = intervalo ("B1"), ordem: = xlAscending .SetRange Range ("A1 : C13 ") .Header = xlSim End Sub 

Etapa 5: use .Aplique para aplicar todas essas coisas sob com a instrução e feche o loop escrevendo Terminar com.

Código:

 Sub SortEx3 () Com a chave ActiveSheet.Sort .SortFields.Add: = intervalo ("A1"), ordem: = xlAscending .SortFields.Add chave: = intervalo ("B1"), ordem: = xlAscending .SetRange Range ("A1 : C13 ") .Header = xlYes .Aplicar Fim com Fim Sub 

Etapa 6: execute esse código pressionando F5 ou o botão Executar manualmente e consulte a saída.

Nesse código, o ActiveSheets.Sort ajuda o sistema a identificar a planilha na qual os dados devem ser classificados. SortFields.Add permite adicionar duas condições de classificação com sua ordem (crescente nos dois casos). SetRange permite que o sistema defina o intervalo de A1 a C13. Você pode mover esse intervalo também. As instruções Apply permitem que o sistema aplique todas as alterações feitas no loop With.

Por fim, você obtém os dados que são classificados com base no nome do Emp primeiro e depois no local.

Coisas para lembrar

  • Em Classificação do VBA, você pode criar intervalos nomeados em vez de referências de célula e usar o mesmo. Ex. Se você criou o intervalo nomeado para a célula A1: A10 como "EmpRange", você pode usá-lo em Range.Sort como Range ("EmpRange").
  • Você pode classificar os dados em ordem crescente e decrescente, da mesma forma que no Excel.
  • Se você não tiver certeza se seus dados têm um cabeçalho ou não, você pode usar o xlGuess na seção Cabeçalho para permitir que o sistema adivinhe se a primeira linha de dados é ou não um cabeçalho.

Artigos recomendados

Este foi um guia para o Excel VBA Sort. Aqui discutimos a classificação do VBA e como usar a função de classificação do VBA do Excel, além de exemplos práticos e modelo de excel para download. Você também pode consultar nossos outros artigos sugeridos -

  1. Guia rápido para Excel Classificar por número
  2. Usando a função de correspondência do VBA
  3. Como classificar coluna no Excel?
  4. VBA While Loop | MS Excel

Categoria: