/ / Sorter Numbers i Excel VBA

Sorter numre i Excel VBA

Nedenfor vil vi se på et program i Excel VBA at sorterer tal.

Situation:

Sort Numbers Eksempel

Placer en kommandoknap på dit regneark og tilføj følgende kodelinjer:

1. Først erklærer vi tre variabler af typen Integer og en Range objekt.

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

2. Vi initialiserer Range objektet rng med tallene i kolonne A. Vi bruger CurrentRegion egenskaben til dette. CurrentRegion er nyttigt, når vi ikke kender de nøjagtige grænser af en række på forhånd (vi vil have dette program til at fungere for 9 numre, men også for 90 numre).

Set rng = Range("A1").CurrentRegion

3. Vi starter to til næste løkker.

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

Forklaring: rng.Count er 9, så de to første kode linjer reduceres til For i = 1 til 9 og For j = i + 1 til 9. For i = 1, j = 2, 3, ..., 8 og 9 kontrolleres.

4. For at sortere tallene korrekt sammenligner vi det første nummer med det næste nummer. Hvis det næste nummer er mindre, bytter vi numrene. Tilføj følgende Hvis så erklæring.

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

End If

Hvis ovenstående erklæring er sandt, bytter vi tallene.

For eksempel: for i = 1 og j = 2 sammenlignes tallene 2 og 10. Ovenstående erklæring er ikke sandt. Således er det ikke nødvendigt at bytte numrene. Excel VBA øges j med 1 og gentager kodelinjerne for i = 1 og j = 3. Du kan nemt se at 5 er større end 2, så det er stadig ikke nødvendigt at bytte numrene. Vi får det samme resultat for j = 4, j = 5 og j = 6. Når vi kommer til j = 7, er ovenstående sætning sand, da 1 er mindre end 2.

5. Vi bytter numrene. Vi gemmer midlertidigt et tal til temp, så Excel VBA kan bytte numrene korrekt. Tilføj følgende kodelinjer i If-sætningen.

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

6. Vi lukker den anden For Next-løkke (uden for If-sætningen).

Next j

For i = 1 og j = 7 byttede Excel VBAnumre. Det betyder at vi får 1 i første position og 2 i position 7. Nu hvor vi har 1 i første position, sammenligner vi denne værdi med 5 (for j = 8) og 4 (for j = 9). Der er ikke behov for at bytte numrene (1 er det mindste antal). På denne måde får Excel VBA (for i = 1) det mindste antal i den første position. For at få det andet mindste nummer i anden position gentager Excel VBA de nøjagtige samme trin for i = 2. For at få det tredje mindste nummer i tredje position gentager Excel VBA de samme trin for i = 3 osv.

7. Luk den første til næste loop (uden for If-sætningen).

Next i

8. Test dit program.

Resultat:

Sorter numre i Excel VBA

Læs også: