/ / Számok rendezése Excel VBA-ban

Számok rendezése Excel VBA-ban

Az alábbiakban egy programot nézünk be Excel VBA hogy rendezi a számokat.

Helyzet:

Számok rendezése Példa

Helyezzen egy parancsgombot a munkalapra, és adja hozzá a következő kódsorokat:

1. Először három változót deklarálunk: Integer és egy Range objektum.

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

2. A Range objektum rng-t inicializáljuk az A oszlopban levő számokkal. A CurrentRegion tulajdonságot használjuk. A CurrentRegion akkor hasznos, ha nem ismerjük előre a tartomány pontos határait (9 számra, de 90 számra is).

Set rng = Range("A1").CurrentRegion

3. Két For Next hurkot indítunk.

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

Magyarázat: A rng.Count egyenlő 9-gyel, így az első két kódsor az For i = 1-9 és For j = i + 1-9 értékekre csökken. Az i = 1, j = 2, 3, ..., 8 és 9 ellenőrzik.

4. A számok rendezéséhez az első számot a következő számhoz hasonlítjuk össze. Ha a következő szám kisebb, akkor kicseréljük a számokat. Adja hozzá a következő If Then utasítást.

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

End If

Ha a fenti állítás igaz, akkor a számokat kicseréljük.

Például: i = 1 és j = 2 esetén a 2. és a 10. szám összehasonlításra kerül. A fenti állítás nem igaz. Így nincs szükség a számok cseréjére. Az Excel VBA növekszik j-val 1-re, és megismétli az i = 1 és j = 3 kódsorokat. Könnyen látja, hogy az 5 nagyobb, mint 2, ezért nincs szükség a számok cseréjére. Ugyanazt az eredményt kapjuk j = 4, j = 5 és j = 6 esetén. Amikor j = 7-re érünk, a fenti utasítás igaz, hiszen az 1 kisebb, mint 2.

5. Cseréljük a számokat. Az egyik számot ideiglenesen tároljuk tempbe, hogy az Excel VBA megfelelően cserélhesse a számokat. Adja hozzá a következő kódsorokat az If utasításban.

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

6. Bezárjuk a második For Next hurkot (az If utasítás kivételével).

Next j

Az i = 1 és j = 7 esetében az Excel VBA swapot adottszámokat. Ez azt jelenti, hogy 1-et kapunk az első pozícióban és 2 a 7. pozícióban. Most, hogy az első pozícióban van 1, akkor ezt az értéket 5 (j = 8) és 4 (j = 9) értékkel hasonlítjuk össze. A számok cseréje nem szükséges (1 a legkisebb szám). Így az Excel VBA megkapja (i = 1) a legkisebb számot az első pozícióban. A második legkisebb szám megszerzéséhez a második pozícióban az Excel VBA ugyanazokat a lépéseket ismételje meg i = 2. Ha a harmadik legkisebb számot a harmadik pozícióba szeretné kapni, az Excel VBA ugyanazokat a lépéseket ismételje meg, mint i = 3 stb.

7. Zárja be az első For Next hurkot (az If utasítás kivételével).

Next i

8. Vizsgálja meg a programot.

Eredmény:

Számok rendezése Excel VBA-ban

Szintén olvasható: