Poniżej przyjrzymy się programowi w Excel VBA że losowo sortuje dane (w tym przykładzie losowo sortuje nazwy).
Sytuacja:
1. Najpierw deklarujemy cztery zmienne. Jedną zmienną typu String nazywamy TempString, jedną zmienną typu Integer nazywamy TempInteger, jedną zmienną typu Integer nazywamy i i jedną zmienną typu Integer nazywamy j.
Dim tempString As String, tempInteger As Integer, i As Integer, j As Integer
2. W kolumnie B wpisujemy 5 losowych liczb (po jednej na każde imię). Używamy do tego funkcji arkusza roboczego RandBetween.
Dla i = 1 do 5
Komórki(i, 2)).Wartość = Funkcja arkusza roboczego.RandBetween(0, 1000)
Dalej ja
Dotychczasowy wynik:
Użyjemy numerów obok każdego nazwiska, aby posortować nazwy. Imię z najniższym numerem jako pierwsze, nazwisko z drugim najniższym numerem, drugie itd.
3. Rozpoczynamy podwójną pętlę.
Dla i = 1 do 5
Dla j = i + 1 do 5
4. Dodaj następującą linię kodu:
If Cells(j, 2).Value < Cells(i, 2).Value Then
Przykład: dla i = 1 oraz j = 2, Wendy i Richard są porównywani. Ponieważ Richard ma niższą liczbę, zamieniamy Wendy i Richarda. Richard jest teraz na pierwszym miejscu. Dla i = 1 oraz j = 3 porównuje się Richarda i Joosta. Joost ma wyższą liczbę, więc nic się nie dzieje. W ten sposób Excel VBA otrzymuje nazwę o najniższym numerze na pierwszej pozycji. Dla i = 2, Excel VBA otrzymuje nazwę z drugim najniższym numerem na drugiej pozycji itp.
5. Jeśli tak, zamieniamy imiona.
tempString = Cells(i, 1)).Value
Komórki(i, 1).Wartość = Komórki(j, 1).Wartość
Cells(j, 1)).Wartość = łańcuch temp
6. I zamieniamy liczby.
tempInteger = Cells(i, 2)).Value
Komórki(i, 2).Wartość = Komórki(j, 2).Wartość
Komórki(j, 2)).Wartość = tempInteger
7. Nie zapomnij zamknąć instrukcji If.
Zakończ, jeśli
8. Nie zapomnij zamknąć dwóch pętli.
Następny j
Dalej ja
9. Przetestuj program.
Wynik:
Uwaga: możesz dodać wiersz, który usuwa liczby z kolumny B. Jeszcze przyjemniej jest umieścić liczby każdej nazwy w tablicy, aby żadne liczby nie były umieszczane w arkuszu. Jednak dla celów ilustracyjnych postanowiliśmy umieścić wartości na arkuszu.