/ / Sorteer Numbers in Excel VBA

Sorteer Numbers in Excel VBA

Hieronder zullen we een programma bekijken in Excel VBA dat sorteert nummers.

Situatie:

Sort Numbers Voorbeeld

Plaats een opdrachtknop op uw werkblad en voeg de volgende coderegels toe:

1. Eerst declareren we drie variabelen van het type Integer en een Range-object.

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

2. We initialiseren het Range-object rng met de getallen in kolom A. Hiervoor gebruiken we de eigenschap CurrentRegion. CurrentRegion is handig als we van tevoren de precieze grenzen van een bereik niet kennen (we willen dat dit programma werkt voor 9 nummers maar ook voor 90 nummers).

Set rng = Range("A1").CurrentRegion

3. We starten twee For Next-lussen.

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

Verklaring: rng.Count is gelijk aan 9, dus de eerste twee coderegels verminderen tot Voor i = 1 tot 9 en Voor j = i + 1 tot 9. Voor i = 1, j = 2, 3, ..., 8 en 9 zijn gecontroleerd.

4. Om de getallen goed te sorteren, vergelijken we het eerste getal met het volgende nummer. Als het volgende nummer kleiner is, wisselen we de cijfers. Voeg de volgende If Then-instructie toe.

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

End If

Als de bovenstaande verklaring waar is, wisselen we de cijfers om.

Bijvoorbeeld: voor i = 1 en j = 2 worden de nummers 2 en 10 vergeleken. De bovenstaande verklaring is niet waar. Het is dus niet nodig om de cijfers te wisselen. Excel VBA wordt j op 1 verhoogd en herhaalt de coderegels voor i = 1 en j = 3. U kunt eenvoudig zien dat 5 groter is dan 2, dus u hoeft de cijfers nog steeds niet te wisselen. We krijgen hetzelfde resultaat voor j = 4, j = 5 en j = 6. Als we bij j = 7 aankomen, is bovenstaande verklaring waar, aangezien 1 kleiner is dan 2.

5. We ruilen de nummers. We slaan tijdelijk een getal op om te temperen, zodat Excel VBA de nummers correct kan omwisselen. Voeg de volgende coderegels toe in de If-instructie.

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

6. We sluiten de tweede For Next-lus (Outside the If-instructie).

Next j

Voor i = 1 en j = 7 heeft Excel VBA de. Geruildgetallen. Dat betekent dat we 1 krijgen op de eerste positie en 2 op positie 7. Nu dat we 1 hebben op de eerste positie, zullen we deze waarde vergelijken met 5 (voor j = 8) en 4 (voor j = 9). Het is niet nodig om de cijfers te wisselen (1 is het kleinste getal). Op deze manier krijgt Excel VBA (voor i = 1) het kleinste getal op de eerste positie. Om het tweede kleinste getal op de tweede positie te krijgen, herhaalt Excel VBA precies dezelfde stappen voor i = 2. Om het derde kleinste getal op de derde positie te krijgen, herhaalt Excel VBA exact dezelfde stappen voor i = 3, enz.

7. Sluit de eerste lus Next (buiten de If-instructie).

Next i

8. Test je programma.

Resultaat:

Sorteer Numbers in Excel VBA

Lees ook: