VBA Sort Array

Denne opplæringen vil demonstrere hvordan du sorterer verdier i en matrise i VBA

Sortering av en endimensjonal matrise ved hjelp av en løkke

Sortering av en matrise krever litt datamanipulering ved hjelp av sløyfer, variabler og midlertidige matriser.

  • Du må først fylle ut matrisen med verdiene dine
  • Du må deretter gå gjennom matrisen to ganger! En gang for å få en verdi fra den nåværende elementmatrisen, og mens den fortsatt er i sløyfen, for å få verdien til det neste elementet i matrisen.
  • Du må deretter sammenligne elementene - og flytte den andre til posisjonen til den første hvis den andre er alfabetisk FØR den første.

Eksemplet nedenfor viser denne fremgangsmåten.

1234567891011121314151617181920212223 Sub SortAnArray ()Dim i As Long'Sett matrisenDim strName () Som variantDim Temp som variant'fyll ut matrisenstrName () = Array ("Bob Smith", "John Davies", "Fred Jones", "Steve Jenkins", "Bob Williams")'gå gjennom grensen til arry og få fornavnetFor i = LBound (strName) Til UBound (strName) - 1'gå gjennom igjen, og sjekk om det neste navnet er alfabetisk før eller etter originalenFor j = i + 1 til UBound (strName)Hvis UCase (strName (i))> UCase (strName (j)) Deretter'hvis navnet må flyttes før det forrige navnet, legg det til i en temp -matriseTemp = strName (j)'bytt navnstrName (j) = strName (i)strName (i) = TempSlutt omNeste jNeste jeg'Skriv ut matrisen gjennom en meldingsboksMsgBox Join (strName (), vbCrLf)Slutt Sub

Hvis du kjører denne prosedyren, får du følgende meldingsboks.

Du kan også sortere matrisen i den andre retningen - f.eks .: Z til A ved å endre denne kodelinjen

1 Hvis UCase (strName (i))> UCase (strName (j)) Deretter

til denne kodelinjen

1 Hvis UCase (strName (i)) <UCase (strName (j)) Da

Du vil da få følgende meldingsboks.

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave