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: