Abaixo, veremos um programa em Excel VBA que classifica dados aleatoriamente (neste exemplo, classifica nomes aleatoriamente).
Situação:
1. Primeiro, declaramos quatro variáveis. Uma variável do tipo String que chamamos de TempString, uma variável do tipo Integer que chamamos de TempInteger, uma variável do tipo Integer que chamamos de i e uma variável do tipo Integer que chamamos de j.
Dim tempString As String, tempInteger As Integer, i As Integer, j As Integer
2. Escrevemos 5 números aleatórios na coluna B (um para cada nome). Para isso, usamos a função de planilha RandBetween.
Para i = 1 a 5
Células (i, 2) .Value = WorksheetFunction.RandBetween (0, 1000)
Proximo eu
Resultado até agora:
Usaremos os números ao lado de cada nome para classificar os nomes. O nome com o número mais baixo primeiro, o nome com o segundo número mais baixo, o segundo, etc.
3. Iniciamos um loop duplo.
Para i = 1 a 5
Para j = i + 1 a 5
4. Adicione a seguinte linha de código:
If Cells (j, 2) .Value <Cells (i, 2) .Value Then
Exemplo: para i = 1 e j = 2, Wendy e Richard são comparados. Como Richard tem um número menor, trocamos Wendy e Richard. Richard está na primeira posição agora. Para i = 1 e j = 3, Richard e Joost são comparados. Joost tem um número maior, então nada acontece. Dessa forma, o Excel VBA obtém o nome com o menor número na primeira posição. Para i = 2, o Excel VBA obtém o nome com o segundo número mais baixo na segunda posição, etc.
5. Se for verdade, trocamos os nomes.
tempString = Células (i, 1) .Value
Células (i, 1) .Valor = Células (j, 1) .Valor
Células (j, 1) .Value = tempString
6. E trocamos os números.
tempInteger = Células (i, 2) .Valor
Células (i, 2) .Valor = Células (j, 2) .Valor
Células (j, 2) .Value = tempInteger
7. Não se esqueça de fechar a instrução If.
Fim se
8. Não se esqueça de fechar os dois loops.
Próximo j
Proximo eu
9. Teste o programa.
Resultado:
Observação: você pode adicionar uma linha que exclui os números da coluna B. É ainda melhor colocar os números de cada nome em uma matriz, de forma que nenhum número seja colocado na planilha. No entanto, para fins ilustrativos, optamos por colocar os valores na folha.