Spisie treści
Ten samouczek pokaże, jak sortować wartości w tablicy w VBA
Sortowanie tablicy jednowymiarowej za pomocą pętli
Sortowanie tablicy wymaga trochę manipulacji danymi za pomocą pętli, zmiennych i tablic tymczasowych.
- Najpierw musisz wypełnić tablicę swoimi wartościami
- Następnie musisz dwukrotnie przejść przez tablicę! Raz, aby uzyskać wartość z bieżącej tablicy elementów, a jednocześnie w tej pętli, aby uzyskać wartość następnego elementu w tablicy.
- Następnie musisz porównać elementy - i przenieść drugi na pozycję pierwszego, jeśli drugi jest alfabetycznie PRZED pierwszym.
Poniższy przykład ilustruje tę procedurę.
1234567891011121314151617181920212223 | Sub SortAnArray()Przyciemnij i tak długo'Ustaw tablicęDim strName() jako wariantDim Temp jako wariant'wypełnij tablicęstrName() = Array("Bob Smith", "John Davies", "Fred Jones", "Steve Jenkins", "Bob Williams")„przejdź przez granicę arry i zdobądź imię”For i = LBound(strName) To UBound(strName) - 1'przejdź ponownie i sprawdź, czy następna nazwa jest alfabetycznie przed czy po oryginaleFor j = i + 1 To UBound(strName)Jeśli UCase(strName(i)) > UCase(strName(j)) Wtedy'jeśli nazwa musi być przeniesiona przed poprzednią nazwą, dodaj do tablicy tymczasowejTemp = strNazwa(j)„zamień nazwy”strNazwa(j) = strNazwa(i)strNazwa(i) = TempZakończ, jeśliNastępny jDalej ja'Wyślij tablicę przez okno wiadomościMsgBox Join(strName(), vbCrLf)Napis końcowy |
Jeśli uruchomisz tę procedurę, otrzymasz następujące okno komunikatu.
Możesz też posortować tablicę w innym kierunku - np.: Z na A zmieniając ten wiersz kodu
1 | Jeśli UCase(strName(i)) > UCase(strName(j)) Wtedy |
do tego wiersza kodu
1 | Jeśli UCase(strName(i)) < UCase(strName(j)) Wtedy |
Otrzymasz wtedy następujące okno komunikatu.