/ / Sortowanie liczb w programie Excel VBA

Sortowanie liczb w Excelu VBA

Poniżej przyjrzymy się programowi w Excel VBA że sortuje liczby.

Sytuacja:

Sortuj liczby Przykład

Umieść przycisk polecenia w arkuszu i dodaj następujące wiersze kodu:

1. Najpierw deklarujemy trzy zmienne typu Integer i jeden Range.

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

2. Inicjujemy obiekt Range rng z liczbami w kolumnie A. W tym celu używamy właściwości CurrentRegion. CurrentRegion jest przydatny, gdy nie wiemy z góry dokładnych granic zakresu (chcemy, aby ten program działał na 9 liczbach, ale także na 90 cyfrach).

Set rng = Range("A1").CurrentRegion

3. Rozpoczynamy dwie pętle For Next.

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

Objaśnienie: rng.Count równa się 9, więc pierwsze dwie linie kodu zmniejszają się do For i = 1 do 9 i For j = i + 1 do 9. Dla i = 1, j = 2, 3, ..., 8 i 9 są sprawdzane.

4. Aby poprawnie posortować liczby, porównujemy pierwszą liczbę z kolejnym numerem. Jeśli następny numer jest mniejszy, zamieniamy liczby. Dodaj następującą instrukcję If Then.

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

End If

Jeśli powyższe stwierdzenie jest prawdziwe, zamieniamy liczby.

Na przykład: dla i = 1 i j = 2 porównywane są liczby 2 i 10. Powyższe stwierdzenie nie jest prawdziwe. Tak więc nie ma potrzeby zamiany liczb. Excel VBA zwiększa j o 1 i powtarza linie kodu dla i = 1 i j = 3. Możesz łatwo zauważyć, że 5 jest większe niż 2, więc wciąż nie musisz wymieniać liczb. Otrzymujemy taki sam wynik dla j = 4, j = 5 i j = 6. Gdy dojdziemy do j = 7, powyższe stwierdzenie jest prawdziwe, ponieważ 1 jest mniejsze niż 2.

5. Zamieniamy liczby. Przechowujemy tymczasowo jedną liczbę do temp, aby Excel VBA mógł poprawnie zamieniać liczby. Dodaj następujące linie kodu w instrukcji If.

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

6. Zamykamy drugą pętlę For Next (poza instrukcją If).

Next j

Dla i = 1 i j = 7, Excel VBA zamieniłliczby. Oznacza to, że otrzymujemy 1 na pierwszej pozycji, a 2 na pozycji 7. Teraz, gdy mamy 1 na pierwszym miejscu, porównamy tę wartość z 5 (dla j = 8) i 4 (dla j = 9). Nie ma potrzeby zamiany liczb (1 to najmniejsza liczba). W ten sposób Excel VBA pobiera (dla i = 1) najmniejszą liczbę na pierwszej pozycji. Aby uzyskać drugą najmniejszą liczbę na drugiej pozycji, Excel VBA powtarza dokładnie te same kroki dla i = 2. Aby uzyskać trzecią najmniejszą liczbę na trzeciej pozycji, Excel VBA powtarza dokładnie te same kroki dla i = 3 itd.

7. Zamknij pierwszą pętlę For Next (poza instrukcją If).

Next i

8. Sprawdź swój program.

Wynik:

Sortowanie liczb w Excelu VBA

Przeczytaj również: