Sortuj liczby w Excel VBA - Łatwe makra Excel

Spisie treści

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

Sytuacja:

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

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

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

2. Inicjujemy obiekt Range rng liczbami z kolumny A. Używamy do tego właściwości CurrentRegion. CurrentRegion jest przydatny, gdy nie znamy z góry dokładnych granic zakresu (chcemy, aby ten program działał dla 9 liczb, ale także dla 90 liczb).

Ustaw rng = Zakres("A1").CurrentRegion

3. Rozpoczynamy dwie pętle For Next.

Dla i = 1 To rng.Count
Dla 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 oraz For j = i + 1 do 9. For i = 1, j = 2, 3,… , 8 i 9 są sprawdzane .

4. Aby poprawnie posortować liczby, porównujemy pierwszą liczbę z następną. Jeśli następna liczba jest mniejsza, zamieniamy liczby. Dodaj następującą instrukcję If Then.

Jeśli rng.Cells(j) < rng.Cells(i) Wtedy
Zakończ, jeśli

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. Dzięki temu nie ma potrzeby zamiany numerów. 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 nadal nie ma potrzeby zamiany liczb. Ten sam wynik otrzymujemy dla j = 4, j = 5 i j = 6. Kiedy dochodzimy do j = 7, powyższe stwierdzenie jest prawdziwe, ponieważ 1 jest mniejsze od 2.

5. Zamieniamy liczby. Tymczasowo przechowujemy jeden numer do temp, aby Excel VBA mógł poprawnie zamienić liczby. Dodaj następujące wiersze kodu w instrukcji If.

'zamień numery'
temp = rng.Komórki(i)
rng.Komórki(i) = rng.Komórki(j)
rng.Komórki(j) = temp

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

Następny j

Dla i = 1 i j = 7, Excel VBA zamienił liczby. Oznacza to, że otrzymujemy 1 na pierwszej pozycji i 2 na 7. Teraz, gdy mamy 1 na pierwszej pozycji, 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 otrzymuje (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).

Dalej ja

8. Przetestuj swój program.

Wynik:

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave