Acest tutorial va arăta cum să sortați valorile într-o matrice în VBA
Sortarea unui array unidimensional folosind o buclă
Sortarea unei matrice necesită un pic de manipulare a datelor folosind bucle, variabile și matrice temporare.
- Mai întâi trebuie să completați matricea cu valorile dvs.
- Apoi, trebuie să parcurgeți de două ori matricea! O dată pentru a obține o valoare din matricea de element curent și încă în bucla respectivă, pentru a obține valoarea următorului element din matrice.
- Apoi, trebuie să comparați elementele - și să îl mutați pe cel de-al doilea în poziția primului, dacă al doilea este alfabetic ÎNAINTE de primul.
Exemplul de mai jos demonstrează această procedură.
1234567891011121314151617181920212223 | Sub SortAnArray ()Dim i As Long'Setați matriceaDim strName () Ca variantăDim Temp As Variant'populează matriceastrName () = Array („Bob Smith”, „John Davies”, „Fred Jones”, „Steve Jenkins”, „Bob Williams”)parcurgeți limitele ary și obțineți prenumelePentru i = LBound (strName) To UBound (strName) - 1'parcurgeți din nou și verificați dacă următorul nume este alfabetic înainte sau după originalPentru j = i + 1 la UBound (strName)Dacă UCase (strName (i))> UCase (strName (j)) Atunci'dacă numele trebuie mutat înainte de numele anterior, adăugați la o matrice tempTemp = strName (j)'schimbă numelestrName (j) = strName (i)strName (i) = TempEnd IfUrmătorul jApoi eu'Produceți matricea printr-o casetă de mesajeMsgBox Join (strName (), vbCrLf)Sfârșitul Sub |
Dacă executați această procedură, veți primi următoarea casetă de mesaj.
De asemenea, puteți sorta matricea în cealaltă direcție - de exemplu: Z la A schimbând această linie de cod
1 | Dacă UCase (strName (i))> UCase (strName (j)) Atunci |
la această linie de cod
1 | Dacă UCase (strName (i)) <UCase (strName (j)) Atunci |
Apoi veți primi următoarea casetă de mesaj.