VBA-Sortier-Array

Dieses Tutorial zeigt, wie man Werte in einem Array in VBA sortiert

Sortieren eines eindimensionalen Arrays mithilfe einer Schleife

Das Sortieren eines Arrays erfordert ein wenig Datenmanipulation mit Schleifen, Variablen und temporären Arrays.

  • Sie müssen zuerst das Array mit Ihren Werten füllen
  • Sie müssen dann das Array zweimal durchlaufen! Einmal, um einen Wert aus dem aktuellen Elementarray zu erhalten, und während noch in dieser Schleife, um den Wert des nächsten Elements im Array zu erhalten.
  • Sie müssen dann die Elemente vergleichen - und das 2. an die Position des ersten verschieben, wenn das 2. alphabetisch VOR dem 1. steht.

Das folgende Beispiel veranschaulicht dieses Verfahren.

1234567891011121314151617181920212223 UntersortAnArray()Dim ich so lang'Array setzenDim strName() als VarianteDim Temp als Variante'das Array auffüllenstrName() = Array("Bob Smith", "John Davies", "Fred Jones", "Steve Jenkins", "Bob Williams")'Schleife durch die Arry und erhalte den VornamenFür i = LBound(strName) Zu UBound(strName) - 1'Schleife noch einmal durch und überprüfe, ob der nächste Name alphabetisch vor oder nach dem Original stehtFür j = i + 1 an UBound(strName)Wenn UCase(strName(i)) > UCase(strName(j)) Then'wenn der Name vor den vorherigen Namen verschoben werden muss, zu einem temporären Array hinzufügenTemp = StrName(j)'die Namen vertauschenStrName(j) = StrName(i)strName(i) = TempEnde WennNächstes jAls nächstes'Das Array über ein Meldungsfeld ausgebenMsgBox Join(strName(), vbCrLf)End Sub

Wenn Sie dieses Verfahren ausführen, wird das folgende Meldungsfeld angezeigt.

Sie können das Array auch in die andere Richtung sortieren - zB: Z nach A, indem Sie diese Codezeile ändern

1 Wenn UCase(strName(i)) > UCase(strName(j)) Then

zu dieser Codezeile

1 Wenn UCase(strName(i)) < UCase(strName(j)) Then

Sie erhalten dann das folgende Meldungsfeld.

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave