VBA Sort Array

Denna handledning visar hur du sorterar värden i en matris i VBA

Sortera en endimensionell matris med hjälp av en loop

Att sortera en matris kräver lite datamanipulering med hjälp av loopar, variabler och tillfälliga matriser.

  • Du måste först fylla i arrayen med dina värden
  • Du måste sedan gå igenom matrisen två gånger! En gång för att få ett värde från den aktuella elementmatrisen, och medan den fortfarande finns i den slingan, för att få värdet för nästa element i matrisen.
  • Du måste sedan jämföra elementen - och flytta det andra till positionen för det första om det andra är alfabetiskt FÖR det första.

Exemplet nedan visar detta förfarande.

1234567891011121314151617181920212223 Sub SortAnArray ()Dim i As Long'Ställ in matrisenDim strName () Som variantDim Temp som variant'fyll i matrisenstrName () = Array ("Bob Smith", "John Davies", "Fred Jones", "Steve Jenkins", "Bob Williams")'gå igenom gränsen för arry och få förnamnetFör i = LBound (strName) Till UBound (strName) - 1'gå igenom igen och kontrollera om nästa namn är alfabetiskt före eller efter originaletFör j = i + 1 till UBound (strName)Om UCase (strName (i))> UCase (strName (j)) Sedan'om namnet måste flyttas före föregående namn, lägg till i en temp -arrayTemp = strName (j)'byt namnstrName (j) = strName (i)strName (i) = TempAvsluta omNästa jNästa i'Mata ut matrisen genom en meddelanderutaMsgBox Join (strName (), vbCrLf)Avsluta Sub

Om du kör den här proceduren får du följande meddelanderuta.

Du kan också sortera matrisen i den andra riktningen - t.ex.: Z till A genom att ändra denna kodrad

1 Om UCase (strName (i))> UCase (strName (j)) Sedan

till denna kodrad

1 Om UCase (strName (i)) <UCase (strName (j)) Sedan

Du skulle då få följande meddelanderuta.

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave