Classificar números no Excel VBA - Macros fáceis do Excel

Índice

Abaixo, veremos um programa em Excel VBA que classifica os números.

Situaçã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 na coluna A. Usamos a propriedade CurrentRegion para isso. CurrentRegion é útil quando não sabemos com antecedência os limites exatos de um intervalo (queremos que este programa funcione para 9 números, mas também para 90 números).

Defina rng = Range ("A1"). CurrentRegion

3. Iniciamos dois loops For Next.

Para i = 1 para rng.Count
Para j = i + 1 para 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. Se o próximo número for menor, trocamos os números. Adicione a seguinte instrução If Then.

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

Se a afirmação acima for verdadeira, 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. O VBA do Excel 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 a j = 7, a afirmação acima é verdadeira, pois 1 é menor que 2.

5. Trocamos os números. Nós armazenamos temporariamente um número como temporário, para que o Excel VBA possa trocar os números corretamente. Adicione as seguintes linhas de código na instrução If.

'números de troca
temp = rng.Células (i)
rng.Cells (i) = rng.Cells (j)
rng.Células (j) = temp

6. Fechamos o segundo loop For Next (fora da instrução If).

Próximo j

Para i = 1 e j = 7, o Excel VBA trocou os números. Isso significa que obtemos 1 na primeira posição e 2 na posição 7. Agora que temos 1 na primeira posição, compararemos esse 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).

Proximo eu

8. Teste seu programa.

Resultado:

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave