Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1244to1248
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
Mehrspaltige Listbox nach Datum sortieren
KLE
Hi,
...ich verzweifle langsam. Ich habe eine Userform mit einer Listbox.
Diese enthält eine Auflistung von Rechnungen und Rechnungsinfos, welche per Filter (Suchtexte) aus einem Tabellenblatt eingelesen werden. Soweit alles TOP. Aber...
Bei der Datumspalte sortiert mir Excel die Daten nicht korrekt nach Datum, sondern nach den Zahlen vom Tag.
D.h.
statt:
11.09.2010
12.09.2010
05.04.2011
31.05.2011
23.10.2011
ist die Reihenfolge so:
05.04.2011
11.09.2010
12.09.2010
23.10.2011
31.05.2011
WIE kann ich es korrekt sortiert erhalten? Es gibt nämlich 3 Spalten in der Listbox, welche ein Datum enthalten und wonach man sortieren lassen kann...
Gruß und Danke
Kay
AW: Mehrspaltige Listbox nach Datum sortieren
30.12.2011 23:12:08
Josef

Hallo Kay,
und mit welchem Code sortierst du die Listbox?

« Gruß Sepp »

AW:...sorry, sollte eingentlich mit in den Beitrag
30.12.2011 23:23:00
KLE
...
Der Aufruf erfolgt per Combobox, in dem die jeweilige Spalte nach der sortiert werden soll - ausgewählt werden kann:
Private Sub objCSortierungSuche_Change()
'Listbox an Array übergeben
If objLBBelegSuche.ListCount 

Und dies ist dann prcSort...
' Quicksort mit mehreren Sortierkriterien
' aus einem Beitrag auf herber.de/forum...
' Parameter: arrK = Sortkey(s)
' arrD = zu sortierendes Array
' Ist die Zahl positiv, wird aufsteigend, sonst absteigend sortiert.
Public Sub prcSort(ArrK As Variant, arrD() As Variant)
Dim iiK As Integer, nnB As Long, nnC As Long, nArrZ() As Long
Dim nnZ As Long, nnA As Long, vntTemp As Variant
ReDim nArrZ(0 To 1, 0 To UBound(arrD) * 2)
nArrZ(0, 0) = LBound(arrD)                ' Array für den 1. Sortierlauf
nArrZ(0, 1) = UBound(arrD)
nnZ = 1
For iiK = LBound(ArrK) To UBound(ArrK)
If ArrK(iiK)  0 Then                 ' Wenn eine Spalte angegeben
nnA = -1
For nnB = 0 To nnZ Step 2           ' Schleife zum sortieren der Bereiche
If nArrZ(0, nnB)  nArrZ(0, nnB + 1) Then   ' Sortieren, wenn Zeilenzahl > 1
Call prcQSort(CLng(nArrZ(0, nnB)), _
CLng(nArrZ(0, nnB + 1)), CInt(Abs(ArrK(iiK))), _
CBool(ArrK(iiK) > 0), arrD())
nnA = nnA + 2                       ' sortierten Bereich merken
nArrZ(1, nnA - 1) = nArrZ(0, nnB)
nArrZ(1, nnA) = nArrZ(0, nnB + 1)
End If
Next
nnZ = -1
For nnB = 0 To nnA Step 2  'Durchsuchen der sortierten Spalte nach Wertewechsel
vntTemp = arrD(nArrZ(1, nnB), Abs(ArrK(iiK))) '1. Zeile des zu sort. Bereichs
nnZ = nnZ + 1
nArrZ(0, nnZ) = nArrZ(1, nnB)
For nnC = nArrZ(1, nnB) To nArrZ(1, nnB + 1)  ' Suche nach Wechsel im Bereich
If vntTemp  arrD(nnC, Abs(ArrK(iiK))) Then
nnZ = nnZ + 2
nArrZ(0, nnZ - 1) = nnC - 1
nArrZ(0, nnZ) = nnC
vntTemp = arrD(nnC, Abs(ArrK(iiK)))
End If
Next
nnZ = nnZ + 1                                 ' letzte Zeile im Bereich
nArrZ(0, nnZ) = nArrZ(1, nnB + 1)
Next nnB
End If
Next iiK
End Sub

Private Sub prcQSort(lngLB As Long, lngUB As Long, iiZ As Integer, _
bAufAb As Boolean, arrD())
Dim iiK As Integer, nnB As Long, nnC As Long, vntTemp As Variant, vntBuffer As Variant
nnB = lngLB
nnC = lngUB
vntBuffer = arrD((lngLB + lngUB) \ 2, iiZ)
Do
If bAufAb Then
Do While arrD(nnB, iiZ)  vntBuffer: nnB = nnB + 1: Loop
Do While vntBuffer > arrD(nnC, iiZ): nnC = nnC - 1: Loop
End If
If nnB  arrD(nnC, iiZ) Then
For iiK = LBound(arrD, 2) To UBound(arrD, 2)
vntTemp = arrD(nnB, iiK)
arrD(nnB, iiK) = arrD(nnC, iiK)
arrD(nnC, iiK) = vntTemp
Next
End If
nnB = nnB + 1
nnC = nnC - 1
ElseIf nnB = nnC Then
nnB = nnB + 1
nnC = nnC - 1
End If
Loop Until nnB > nnC
If lngLB 
Hinweis: Die Daten in der Tabelle sind als "Datum" formariert und werden als solches aus der Userform (DatePicker-Element) in die Tabelle geschrieben.
Gruß und Danke
Kay
Anzeige
AW: AW:...sorry, sollte eingentlich mit in den Beitrag
30.12.2011 23:31:53
Josef

Hallo Kay,
die Listbox enthält Text und der wird nun mal anders sortiert als Zahlen.
Kannst du nicht eine Beispieldatei hochladen, hab keine Lust das ganze nachzubauen.

« Gruß Sepp »

AW: Anbei eine Musterdatei...Hilfe bei Sortierung
03.01.2012 02:11:39
KLE
Hallo Sepp,
...vielen Dank, war noch nicht eher dazu gekommen. Anbei eine Musterdatei, hier gilt es bei Auswahl der Sortierung eben auch die Spalten mit dem Datum "Korrekt" zu sortieren.
https://www.herber.de/bbs/user/78183.xlsm
Frage: Kann man es so machen, dass es aufwärts wie abwärts sortiert werden kann? z.Bsp. per Checkbox oder so ?!
Gruß und vielen Dank für Deine Hilfe!
Kay
Anzeige
AW: Anbei eine Musterdatei...Hilfe bei Sortierung
03.01.2012 10:50:39
Josef

Hallo Kay,
https://www.herber.de/bbs/user/78188.xlsm
Sortiert wird nun beim Klick auf eine Spaltenüberschrift, abwechselnd auf/ab-steigend.

« Gruß Sepp »

Perfekt...super vielen Lieben Dank! o.T.
03.01.2012 13:46:02
KLE

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige