/ / Aleatoriamente classificar dados no Excel VBA

Aleatoriamente Classificar Dados no Excel VBA

Abaixo, vamos olhar para um programa em Excel VBA naquela classifica aleatoriamente os dados (neste exemplo classifica aleatoriamente os nomes).

Situação:

Aleatoriamente Classificar Dados no Excel VBA

1. Primeiro, declaramos quatro variáveis. Uma variável do tipo String chamamos TempString, uma variável do tipo Integer que chamamos 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 para a coluna B (um para cada nome). Usamos a função de planilha RandBetween para isso.

For i = 1 To 5
    Cells(i, 2).Value = WorksheetFunction.RandBetween(0, 1000)
Next i

Resultado até agora:

Resultado até agora

Vamos usar os números ao lado de cada nome para classificar os nomes. O nome com o menor número primeiro, o nome com o segundo menor número, segundo, etc.

3. Começamos um loop duplo.

For i = 1 To 5
    For j = i + 1 To 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. Porque Richard tem um número menor, nós 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 menor número na segunda posição, etc.

5. Se for verdade, nós trocamos os nomes.

tempString = Cells(i, 1).Value
Cells(i, 1).Value = Cells(j, 1).Value
Cells(j, 1).Value = tempString

6. E nós trocamos os números.

tempInteger = Cells(i, 2).Value
Cells(i, 2).Value = Cells(j, 2).Value
Cells(j, 2).Value = tempInteger

7. Não se esqueça de fechar a instrução If.

End If

8. Não se esqueça de fechar os dois loops.

    Next j
Next i

9. Teste o programa.

Resultado:

Ordenar aleatoriamente o resultado dos dados

Nota: você pode adicionar uma linha que apague os números na coluna B. É ainda melhor colocar os números de cada nome em uma matriz, portanto, nenhum número é colocado em sua planilha. No entanto, para fins ilustrativos, escolhemos colocar a valores na folha.

Leia também: