Como classificar o intervalo no vba?
Para classificar um intervalo de células usando VBA, você precisa usar o método “SORT”, que permite definir uma única chave (coluna) ou várias chaves (para várias colunas) para classificar. Você também pode definir a ordem (crescente ou decrescente) que deseja classificar e especificar se possui um cabeçalho ou não.
Classifique um intervalo com VBA
- Use o objeto range para especificar o intervalo que você deseja classificar.
- Digite um período e insira o método de classificação.
- Especifique a chave que deseja usar para classificar.
- Defina a ordem de classificação.
- Mencione se você tem um cabeçalho ou não.
Range("A1:A11").Sort Key1:=Range("A1"), _ Order1:=xlAscending, _ Header:=xlYes
No código acima você usou o intervalo A1:A11, e no método de classificação você usou ordem crescente, mencionou que tem um cabeçalho no intervalo.
Compreendendo o método de classificação do VBA
Antes de escrever uma macro para classificar um intervalo, é melhor se aprofundar no método de classificação e entender seus argumentos.
Sort (Key1, Order1, Key2, Type, Order2, Key3, Order3, _ Header, OrderCustom, MatchCase, Orientation, SortMethod, _ DataOption1, DataOption2, DataOption3)
Aqui estão os argumentos mais importantes que você usará na vida real.
- Chave : Aqui você precisa definir uma célula cuja coluna deseja usar como base de classificação.
- Ordem : Ordem em que deseja ordenar a coluna (crescente/decrescente).
- Cabeçalho : uma constante para especificar se você tem ou não um cabeçalho ou deseja que o VBA adivinhe.
Classificar em ordem decrescente
No código a seguir, usei ‘xlDescendente’ para classificar a coluna de valor em ordem decrescente.
Range("A1:A13").Sort Key1:=Range("A1"), _ Order1:=xlDescending, _ Orientation:=xlSortColumns
Usando múltiplas colunas (chaves) para classificar
Você também pode usar várias colunas para classificar um intervalo. Vejamos um exemplo da tabela abaixo, onde você tem várias entradas com nomes de funcionários e cidades e precisa classificar usando nome e cidade.
Aqui está o código que você precisa usar:
Range("A1:C13").Sort Key1:=Range("A1"), _ Order1:=xlAscending, _ Key2:=Range("B1"), _ Order1:=xlAscending, _ Header:=xlYes
Como você pode ver no código você tem key1 e key2. Na chave1 você tem a coluna com o nome do funcionário, e na chave2 você tem a coluna da cidade. Para ambas as colunas, a ordem de classificação é crescente e os cabeçalhos estão lá.
Nota: Você pode usar isso como qualquer coluna que deseja usar como base para classificação usando chaves e ordem.
Mudando a orientação do destino
Quando você normalmente classifica dados no Excel, por padrão você pode classificar usando colunas. Mas nas opções de classificação, você pode alterar a orientação da classificação da esquerda para a direita, em vez de de cima para baixo.
Da mesma forma, você tem um argumento no método sort para alterar a orientação ( link ).
Range("A1:C13").Sort Key1:=Range("A1"), _ Order1:=xlAscending, _ Orientation:=xlSortRows