Di seguito vedremo un programma in Excel VBA Quello ordina casualmente i dati (in questo esempio ordina casualmente i nomi).
Situazione:
1. Innanzitutto, dichiariamo quattro variabili. Una variabile di tipo String chiamiamo TempString, una variabile di tipo Integer chiamiamo TempInteger, una variabile di tipo Integer chiamiamo i e una variabile di tipo Integer chiamiamo j.
Dim tempString As String, tempInteger As Integer, i As Integer, j As Integer
2. Scriviamo 5 numeri casuali nella colonna B (uno per ogni nome). Usiamo la funzione del foglio di lavoro RandBetween per questo.
Per i = da 1 a 5
Cells(i, 2).Value = WorksheetFunction.RandBetween(0, 1000)
Avanti io
Risultato finora:
Useremo i numeri accanto a ciascun nome per ordinare i nomi. Il nome con il numero più basso per primo, il nome con il secondo numero più basso, il secondo, ecc.
3. Iniziamo un Double Loop.
Per i = da 1 a 5
Per j = i + 1 a 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 è in prima posizione 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
Celle(i, 1).Valore = Celle(j, 1).Valore
Cells(j, 1).Value = tempString
6. E scambiamo i numeri.
tempInteger = Cells(i, 2).Value
Celle(i, 2).Valore = Celle(j, 2).Valore
Cells(j, 2).Value = tempInteger
7. Non dimenticare di chiudere l'istruzione If.
Finisci se
8. Non dimenticare di chiudere i due loop.
Avanti j
Avanti io
9. Testare il programma.
Risultato:
Nota: puoi aggiungere una riga che elimina i numeri nella colonna B. È ancora più bello posizionare i numeri di ciascun nome in una matrice, quindi nessun numero viene inserito nel foglio di lavoro. Tuttavia, a scopo illustrativo, abbiamo scelto di posizionare i valori sul foglio.