Di seguito vedremo un programma in Excel VBA che ordina numeri.

Situazione:

Sort Numbers Example

Posizionare un pulsante di comando nel foglio di lavoro e aggiungere le righe di codice che segue:

  1. 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
  1. 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
  1. 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.

  1. 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.

  1. 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
  1. 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

  1. Chiudere il primo ciclo For Next (Fuori dalla If).

Next i
  1. Prova il tuo programma.

Risultato:

Sort Numbers in Excel VBA