/ / Ordinamento casuale dei dati in VBA di Excel

Ordinare in modo casuale i dati in VBA di Excel

Di seguito vedremo un programma in Excel VBA quello ordina in modo casuale i dati (in questo esempio ordina in modo casuale i nomi).

Situazione:

Ordinare in modo casuale i dati in VBA di Excel

1. In primo luogo, dichiariamo quattro variabili. Una variabile di tipo String che chiamiamo TempString, una variabile di tipo Integer che chiamiamo TempInteger, una variabile di tipo Integer che chiamiamo i, e una variabile di tipo Integer che chiamiamo j.

Dim tempString As String, tempInteger As Integer, i As Integer, j As Integer

2. Scriviamo 5 numeri casuali nella colonna B (una per ciascun nome). Per questo utilizziamo la funzione del foglio di lavoro RandBetween.

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

Risultato finora:

Risultato finora

Utilizzeremo i numeri accanto a ciascun nome per ordinare i nomi. Il nome con il numero più basso prima, il nome con il secondo numero più basso, il secondo, ecc.

3. Iniziamo un doppio ciclo.

For i = 1 To 5
    For j = i + 1 To 5

4. Aggiungi la seguente riga di codice:

If Cells(j, 2).Value < Cells(i, 2).Value Then

Esempio: per i = 1 e j = 2, Wendy e Richard vengono confrontati. Poiché Richard ha un numero inferiore, scambiamo Wendy e Richard. Richard è al primo posto ora. Per i = 1 e j = 3, vengono confrontati Richard e Joost. Joost ha un numero più alto, quindi non succede nulla. In questo modo, Excel VBA ottiene il nome con il numero più basso nella prima posizione. Per i = 2, Excel VBA ottiene il nome con il secondo numero più basso nella seconda posizione, ecc.

5. Se è vero, scambiamo i nomi.

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

6. E scambiamo i numeri.

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

7. Non dimenticare di chiudere l'istruzione If.

End If

8. Non dimenticare di chiudere i due anelli.

    Next j
Next i

9. Testare il programma.

Risultato:

Ordina dati in modo casuale

Nota: puoi aggiungere una linea che cancella i numeri nella colonna B. È ancora più bello posizionare i numeri di ciascun nome in un array, quindi nessun numero viene inserito nel foglio di lavoro. Tuttavia, a scopo illustrativo, abbiamo scelto di posizionare il valori sul foglio.

Leggi anche: