Indholdsfortegnelse
Denne vejledning viser, hvordan du sorterer værdier i et array i VBA
Sortering af et en-dimensionelt array ved hjælp af en loop
Sortering af et array kræver en smule datamanipulation ved hjælp af loops, variabler og midlertidige arrays.
- Du skal først udfylde arrayet med dine værdier
- Du skal derefter gå igennem arrayet to gange! En gang for at få en værdi fra det aktuelle element array, og mens det stadig er i den loop, for at få værdien af det næste element i arrayet.
- Du skal derefter sammenligne elementerne - og flytte den anden til positionen for den første, hvis den anden er alfabetisk FØR den første.
Nedenstående eksempel viser denne procedure.
1234567891011121314151617181920212223 | Sub SortAnArray ()Dim i så længe'Indstil matrixenDim strName () Som variantDim Temp som variant'udfyld matrixenstrName () = Array ("Bob Smith", "John Davies", "Fred Jones", "Steve Jenkins", "Bob Williams")'sløjfe igennem bunden af arry og få fornavnetFor i = LBound (strName) Til UBound (strName) - 1'loop igennem igen, og kontroller, om det næste navn er alfabetisk før eller efter originalenFor j = i + 1 til UBound (strName)Hvis UCase (strName (i))> UCase (strName (j)) Så'Hvis navnet skal flyttes før det forrige navn, skal du tilføje det til et midlertidigt arrayTemp = strName (j)'byt navnenestrName (j) = strName (i)strName (i) = TempAfslut HvisNæste jNæste i'Udskriv matrixen gennem en meddelelsesboksMsgBox Join (strName (), vbCrLf)Afslut Sub |
Hvis du kører denne procedure, får du følgende meddelelsesboks.
Du kan også sortere arrayet i den anden retning - f.eks .: Z til A ved at ændre denne kodelinje
1 | Hvis UCase (strName (i))> UCase (strName (j)) Så |
til denne kodelinje
1 | Hvis UCase (strName (i)) <UCase (strName (j)) Så |
Du vil derefter få følgende meddelelsesboks.