Ordinare i numeri in Excel VBA
Di seguito vedremo un programma in Excel VBA che ordina numeri.
Situazione:
Posizionare un pulsante di comando nel foglio di lavoro e aggiungere le righe di codice che segue:
-
In primo luogo, si dichiara tre variabili di tipo Integer e un oggetto Range.
Dim i As Integer, j As Integer, temp As Integer, rng As Range
-
inizializzare il RNG oggetto Range con i numeri in colonna A. Usiamo il
link: / VBA-esempi-CurrentRegion [CurrentRegion]
immobili per questo.
CurrentRegion è utile quando non conosciamo le esatte confini di una gamma in anticipo (vogliamo a programmi di lavoro per 9 numeri, ma anche per 90 numeri).
Set rng = Range("A1").CurrentRegion
-
Iniziamo Per due cicli successivi.
For i = 1 To rng.Count For j = i + 1 To rng.Count
Spiegazione: rng.Count uguale a 9, in modo che le prime due righe di codice riducono a per i = 1 a 9 e per j = i + 1 a 9. Per i = 1, j = 2, 3, …, 8 e 9 vengono controllati.
-
Per ordinare i numeri correttamente, si confronta il primo numero con il numero successivo. Se il numero successivo è più piccolo, ci scambiamo i numeri. Aggiungere la seguente If Then.
If rng.Cells(j) < rng.Cells(i) Then End If
Se la dichiarazione di cui sopra è vero, ci scambiamo i numeri.
Ad esempio: per i = 1 e j = 2, i numeri 2 e 10 vengono confrontati. La dichiarazione di cui sopra non è vero. Così, non c’è bisogno di scambiare i numeri. Excel VBA incrementi j da 1 e ripete le linee di codice per i = 1 e j = 3. Si può facilmente vedere che 5 è maggiore di 2, quindi ancora non c’è bisogno di scambiare i numeri. Otteniamo lo stesso risultato per j = 4, j = 5 e j = 6. Quando si arriva a j = 7, la dichiarazione di cui sopra è vero, poiché 1 è minore di 2.
-
di collegamento: / VBA-esempi-casse mobili valori [di swap]
i numeri. Abbiamo memorizzare temporaneamente un numero di temperatura, in modo che Excel VBA può scambiare i numeri in modo corretto. Aggiungere le seguenti righe di codice nella dichiarazione If.
'swap numbers temp = rng.Cells(i) rng.Cells(i) = rng.Cells(j) rng.Cells(j) = temp
-
Chiudiamo il secondo ciclo For Next (Fuori dalla If).
Next j
Per i = 1 e j = 7, Excel VBA scambiati i numeri. Ciò significa che otteniamo 1 nella prima posizione e 2 in posizione 7. Ora che abbiamo 1 nella prima posizione, lo confronta questo valore con 5 (per j = 8) e 4 (per j = 9). Non v’è alcuna necessità di scambiare i numeri (1 è il numero più piccolo).
In questo modo Excel VBA ottiene (per i = 1) il numero più piccolo nella prima posizione. Per ottenere il secondo numero più basso nella seconda posizione, Excel VBA ripete la stessa procedura per i = 2. Per ottenere il terzo numero più piccolo alla terza posizione, Excel VBA ripete la stessa procedura per i = 3, ecc
-
Chiudere il primo ciclo For Next (Fuori dalla If).
Next i
-
Prova il tuo programma.
Risultato: