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 SubVielen Dank!,
Daniel D.