Losowe sortowanie danych w Excel VBA - Łatwe makra Excel

Spisie treści

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.

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

wave wave wave wave wave