/ / Classificar números no Excel VBA

Classificar números no Excel VBA

Abaixo, vamos olhar para um programa em Excel VBA naquela classifica números.

Situação:

Exemplo de números de ordenação

Coloque um botão de comando em sua planilha e adicione as seguintes linhas de código:

1. Primeiro, declaramos três variáveis ​​do tipo Integer e um objeto Range.

Dim i As Integer, j As Integer, temp As Integer, rng As Range

2 Inicializamos o objeto Range rng com os números da coluna A. Usamos a propriedade CurrentRegion para isso. CurrentRegion é útil quando não conhecemos os limites exatos de um intervalo antecipadamente (queremos que este programa funcione para 9 números, mas também para 90 números).

Set rng = Range("A1").CurrentRegion

3. Começamos dois loops For Next.

For i = 1 To rng.Count
    For j = i + 1 To rng.Count

Explicação: rng.Count é igual a 9, então as duas primeiras linhas de código reduzem para For i = 1 a 9 e For j = i + 1 a 9. Para i = 1, j = 2, 3, ..., 8 e 9 são verificados.

4. Para classificar os números corretamente, comparamos o primeiro número com o próximo número. Se o próximo número for menor, nós trocamos os números. Adicione a seguinte declaração If Then.

If rng.Cells(j) < rng.Cells(i) Then

End If

Se a afirmação acima for verdadeira, nós trocamos os números.

Por exemplo: para i = 1 e j = 2, os números 2 e 10 estão sendo comparados. A afirmação acima não é verdadeira. Assim, não há necessidade de trocar os números. Excel VBA incrementa j por 1 e repete as linhas de código para i = 1 e j = 3. Você pode ver facilmente que 5 é maior que 2, portanto, ainda não há necessidade de trocar os números. Obtemos o mesmo resultado para j = 4, j = 5 e j = 6. Quando chegamos em j = 7, a afirmação acima é verdadeira, já que 1 é menor que 2.

5. Nós trocamos os números. Armazenamos temporariamente um número para temp, para que o Excel VBA possa trocar os números corretamente. Adicione as seguintes linhas de código na instrução If.

"swap numbers
temp = rng.Cells(i)
rng.Cells(i) = rng.Cells(j)
rng.Cells(j) = temp

6. Fechamos o segundo loop For Next (Outside the If).

Next j

Para i = 1 e j = 7, o Excel VBA trocou onúmeros. Isso significa que temos 1 na primeira posição e 2 na posição 7. Agora que temos 1 na primeira posição, vamos comparar este valor com 5 (para j = 8) e 4 (para j = 9). Não há necessidade de trocar os números (1 é o menor número). Desta forma, o Excel VBA obtém (para i = 1) o menor número na primeira posição. Para obter o segundo menor número na segunda posição, o Excel VBA repete exatamente as mesmas etapas para i = 2. Para obter o terceiro menor número na terceira posição, o Excel VBA repete exatamente as mesmas etapas para i = 3 etc.

7. Feche o primeiro loop For Next (fora da instrução If).

Next i

8. Teste seu programa.

Resultado:

Classificar números no Excel VBA

Leia também: