Mehrdim. Array nach Datum sortieren
22.01.2023 15:43:09
Daniel
Ich versuche gerade, ein mehrdimensionales Array nach Spalte 2 zu sortieren, wenn in dieser Spalte ein gültiges Datum steht. Ich hoffe, Ihr könnt mir dabei helfen!
Die aus dem Netz kopierte Sortierfunktion sieht folgendermassen aus:
' vSort: 2-dimensionales Array
' index: Spalte, nach der sortiert werden soll (1, 2, 3, ...)
Public Sub QuickSortMultiDim(vSort As Variant, Optional ByVal index As Integer = 1, Optional ByVal lngStart As Variant, Optional ByVal lngEnd As Variant)
' Wird die Bereichsgrenze nicht angegeben,
' so wird das gesamte Array sortiert
If IsMissing(lngStart) Then lngStart = LBound(vSort)
If IsMissing(lngEnd) Then lngEnd = UBound(vSort)
'Immer prüfen, in welcher Dimension nach dem Sortieren was steht
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
' Anzahl Elemente pro Datenzeile
lb_dim = LBound(vSort, 2)
ub_dim = UBound(vSort, 2)
i = lngStart: j = lngEnd
x = vSort((lngStart + lngEnd) / 2, index - 1)
' Array aufteilen
Do
While (vSort(i, index - 1) x): i = i + 1: Wend
While (vSort(j, index - 1) > x): j = j - 1: Wend
If (i = j) Then
' Wertepaare miteinander tauschen
For u = lb_dim To ub_dim
h = vSort(i, u)
vSort(i, u) = vSort(j, u)
vSort(j, u) = h
Next u
i = i + 1: j = j - 1
End If
Loop Until (i > j)
' Rekursion (Funktion ruft sich selbst auf)
If (lngStart j) Then QuickSortMultiDim vSort, index, lngStart, j
If (i lngEnd) Then QuickSortMultiDim vSort, index, i, lngEnd
End Sub
Vielen Dank!,Daniel D.
Anzeige