/ / Ordina numeri in Excel VBA

Ordina i numeri in VBA di Excel

Di seguito vedremo un programma in Excel VBA quello ordina i numeri.

Situazione:

Esempio di numeri di ordinamento

Inserire un pulsante di comando nel foglio di lavoro e aggiungere le seguenti linee di codice:

1. In primo luogo, dichiariamo tre variabili di tipo Integer e un oggetto Range.

Dim i As Integer, j As Integer, temp As Integer, rng As Range

2. Inizializziamo l'oggetto Range rng con i numeri nella colonna A. Usiamo la proprietà CurrentRegion per questo. CurrentRegion è utile quando non conosciamo i limiti precisi di un intervallo in anticipo (vogliamo che questo programma funzioni per 9 numeri ma anche per 90 numeri).

Set rng = Range("A1").CurrentRegion

3. Iniziamo due cicli For Next.

For i = 1 To rng.Count
    For j = i + 1 To rng.Count

Spiegazione: rng.Count equivale a 9, quindi le prime due code code si riducono a For i = 1 a 9 e For j = i + 1 a 9. Per i = 1, j = 2, 3, ..., 8 e 9 sono controllati

4. Per ordinare correttamente i numeri, confrontiamo il primo numero con il numero successivo. Se il numero successivo è più piccolo, scambiamo i numeri. Aggiungere la seguente istruzione If Then.

If rng.Cells(j) < rng.Cells(i) Then

End If

Se l'affermazione sopra è vera, scambiamo i numeri.

Per esempio: per i = 1 e j = 2, i numeri 2 e 10 vengono confrontati. L'affermazione sopra non è vera. Quindi, non c'è bisogno di scambiare i numeri. VBA di Excel incrementa j di 1 e ripete le righe di codice per i = 1 e j = 3. Puoi facilmente vedere che 5 è maggiore di 2, quindi non è ancora necessario scambiare i numeri. Otteniamo lo stesso risultato per j = 4, j = 5 e j = 6. Quando arriviamo a j = 7, l'affermazione sopra è vera poiché 1 è minore di 2.

5. Scambiamo i numeri. Memorizziamo temporaneamente un numero in temp, in modo che Excel VBA possa scambiare correttamente i numeri. Aggiungere le seguenti righe di codice nell'istruzione If.

"swap numbers
temp = rng.Cells(i)
rng.Cells(i) = rng.Cells(j)
rng.Cells(j) = temp

6. Chiudiamo il secondo ciclo For Next (Outside the If statement).

Next j

Per i = 1 e j = 7, Excel VBA ha scambiato il filenumeri. Ciò significa che otteniamo 1 nella prima posizione e 2 nella posizione 7. Ora che abbiamo 1 nella prima posizione, confronteremo questo valore con 5 (per j = 8) e 4 (per j = 9). Non è necessario 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ù piccolo nella seconda posizione, Excel VBA ripete gli stessi identici passaggi per i = 2. Per ottenere il terzo numero più piccolo nella terza posizione, Excel VBA ripete gli stessi identici passaggi per i = 3, ecc.

7. Chiudere il primo ciclo For Next (Outside the If statement).

Next i

8. Metti alla prova il tuo programma.

Risultato:

Ordina i numeri in VBA di Excel

Leggi anche: