Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1436to1440
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zweidimensionales Array sortieren

Zweidimensionales Array sortieren
27.07.2015 11:09:06
Erik
Liebe Gemeinde,
ich habe bereits hier einige Fragen gestellt und immer eine nützliche Antwort erhalten. Ich habe schon seit längerem nach einer Prozedur/Funktion gesucht, die ein zweidimensionales Array sortiert und dabei eine bestimmte Spalte annimmt, sowie die Sortierrichtung (aufsteigend/absteigend) beachtet.
Ich bin nun fündig geworden und habe die Prozedur, die nach der QuickSort-Methode arbeitet, noch etwas angepasst, so dass sie - so denke ich - dem ein oder anderem nützlich erscheinen mag:
Der Code

'|  Prozedur: multi_sort_array
'|  Parameter:
'|      arrData, VARIANT, Array, zweidimensional: Array, das die Daten enthält, die
'|      sortiert werden sollen
'|      lngColumn, LONG: Spaltennummer, die angibt, welche Spalte im Array arrData
'|      sortiert werden soll, auf Nullbastierung achten! Spalte 1 = 0
'|      typSort, EXCELKONSTANTE, optional: Gibt die Sortierreihenfolge an.
'|      Standard: aufsteigend
'|      lngStart, LONG, optional: technischer Parameter, wird nur zur Rekursion benötigt
'|      lngEnd, LONG, optional: technischer Parameter, wird nur zur Rekursion benötigt
'| Quelle: http://www.vbarchiv.net/tipps/tipp_1881-2-dimensionales-array- _
_
_
_
_
_
_
_
nach-beliebiger-spalte-sortieren.html
'|  Erklärung der QuickSort-Methode: https://msdn.microsoft.com/de-de/library/Bb979305.aspx
Private Sub multi_sort_array( _
arrData As Variant, _
Optional ByVal lngColumn As Long = 0, _
Optional typSort As XlSortOrder = 1, _
Optional ByVal lngStart As Long = -1, _
Optional ByVal lngEnd As Long = -1)
Dim i As Long
Dim j As Long
Dim h As Variant
Dim x As Variant
Dim u As Long
Dim lb_dim As Integer
Dim ub_dim As Integer
If lngStart = -1 Then lngStart = LBound(arrData)
If lngEnd = -1 Then lngEnd = UBound(arrData)
lb_dim = LBound(arrData, 2)
ub_dim = UBound(arrData, 2)
i = lngStart: j = lngEnd
x = arrData((lngStart + lngEnd) / 2, lngColumn)
Do
If typSort = xlAscending Then
While (arrData(i, lngColumn)  x): j = j - 1: Wend
Else
While (arrData(i, lngColumn) > x): i = i + 1: Wend
While (arrData(j, lngColumn)  j)
If (lngStart 

Das bringt sie
Es gibt im Netz einige verschiedene Umsetzungen der Quicksort-Methode, nur leider fand ich nie das, was ich brauchte: Eine Prozedur mit der ich ein zweidimensionales Array nach einer bestimmten Spalte entweder absteigend oder aufsteigend sortieren konnte.
Nun habe ich alles zusammengefunden und entsprechend angepasst.
Ich hoffe, es hilft und freue mich, wenn du mir eine Rückmeldung gibst, falls an dem Code irgendetwas nicht stimmen sollte (oder vielleicht es noch etwas besseres gibt). Ich lerne gerne.
Gruß
Erik

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zweidimensionales Array sortieren
27.07.2015 11:14:09
Rudi
Hallo,
es gibt schon seit 10 Jahren eine sehr gute Lösung von Nepumuk.
Siehe http://www.online-excel.de/excel/singsel_vba.php?f=97
Gruß
Rudi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige