VBA Sort Array

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.

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave