Das Thema Excel und Sortieren ist sehr vielfältig.
In diesem Beitrag zeigen wir Ihnen, wie Zahlen per VBA mit Hilfe der sogenannten BubbleSort Routine sortiert werden können.
Wikipedia bezeichnet die BubbleSort-Routine wie folgt: "BubbleSort (auch Sortieren durch Aufsteigen) ist ein Algorithmus, der vergleichsbasiert eine Liste von Elementen sortiert."
Zum Sortieren von Zahlen mit Hilfe der BubbleSort Routine kann der nachfolgend vorgestellte VBA-Code verwendet werden.
In diesem Beispiel befinden sich die zu sortierenden Zahlen im Zellbereich A5:A20 und sollen im Bereich B5:B20 in sortierter Reihenfolge ausgegeben werden.
Sub BubbleSort() '** Dimensionierung der Variablen Dim arr(1 To 1000) Dim iCounter As Integer, iCount As Integer, iTmp As Integer, _ lngLz As Long, lngStartZeile As Long, lngSpalte As Long '** Startzeile und -spalte vorgeben lngStartZeile = 5 lngSpalte = 1 '** Ermittlung der letzten Zeile lngLz = ActiveSheet.Cells(Rows.Count, lngSpalte).End(xlUp).Row '** Einlesen der unsortierten Daten in ein Array For a = lngStartZeile To lngLz arr(a) = ActiveSheet.Cells(a, lngSpalte).Value Next a '** Sortierungsroutine For iCounter = lngStartZeile To lngLz For iCount = iCounter + 1 To lngLz If arr(iCounter) > arr(iCount) Then iTmp = arr(iCounter) arr(iCounter) = arr(iCount) arr(iCount) = iTmp End If Next iCount Next iCounter '** Ausgeben der sortierten Daten in das Arbeitsblatt For iCounter = lngStartZeile To lngLz ActiveSheet.Cells(iCounter, lngSpalte + 1).Value = arr(iCounter) Next iCounter End Sub
Über den untenstehenden Download-Link können Sie die Beispieldatei herunterladen. Zum Starten des Sortiervorgangs genügt ein Klick auf die Schaltfläche "Sortieren", das Ergebnis wird in der nebenstehenden Spalte B ausgegeben, siehe Abbildung 1.
Abbildung1
Weitere Beispiele zum Thema "Sortieren" finden Sie unter den nachfolgenden Links:
- Einträge nach Zellfarbe sortieren
- Daten sofort bei Eingabe sortieren
- Bis Excel 2003: Sortieren per VBA mit mehr als 3 Sortierkriterien
- Begriffe innerhalb einer Zelle sortieren