Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1560to1564
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
VBA Array sortieren
26.05.2017 17:14:51
Herbert
Hallo,
wie kann ich das folgende Array nach der 2. Spalte sortieren?
Sub Abt_TB_Change()
Dim iArtCount%, iListboxRowNr%, arr() As Variant, iRow, iRowU, sSearch$
Application.ScreenUpdating = False
If Abt_TB = "" Then
LB_AbtArtikel.RowSource = "Artikel!A2:C" & iLastRow
Else
LB_AbtArtikel.RowSource = ""
With wksArtikel
iLastRow = IIf(IsEmpty(.Cells(Rows.Count, 2)), _
.Cells(Rows.Count, 2).End(xlUp).Row, Rows.Count)
'* hier wird nach dem Suchbegriff gesucht
Set ArtFound = .Range("B2:B" & iLastRow).Find(Abt_TB, _
.Cells(iLastRow, 2), , xlWhole, , xlNext)
If Not ArtFound Is Nothing Then
'* Schleife von gefundener Stelle bis zu letzten Zeile
sSearch = ArtFound
For iRow = 2 To iLastRow
If .Cells(iRow, 2)  "" And .Cells(iRow, 2) = ArtFound Then
ReDim Preserve arr(0 To 1, 0 To iRowU)
arr(0, iRowU) = .Cells(iRow, 1)
arr(1, iRowU) = .Cells(iRow, 3)
iRowU = iRowU + 1
End If
Next iRow
LB_AbtArtikel.Column = arr
End If
End With
End If
weiter:
Set ArtFound = Nothing
Application.ScreenUpdating = True
End Sub
Vielen Dank im Voraus!
Servus

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Array sortieren
26.05.2017 17:36:06
Matthias
Hallo! Wäre es ggf. nicht besser vor dem Einlesen die Zellen zu sortieren. Dann liest du sie schon sortiert ein und ersparst dir das array zu sortieren. VG
AW: VBA Array sortieren
26.05.2017 17:53:40
Nepumuk
Hallo Herbert,
so lautet der Aufruf:
Call QuickSort(LBound(arr, 2), UBound(arr, 2), arr)

und die Sortierroutine sieht so aus:
Private Sub QuickSort(ByVal pvlngLBound As Long, ByVal pvlngUBound As Long, ByRef pvavntArray() As Variant)
    
    Dim lngIndex1 As Long, lngIndex2 As Long, lngColumn As Long
    Dim vntBuffer As Variant, vntMemory As Variant
    
    lngIndex1 = pvlngLBound
    lngIndex2 = pvlngUBound
    
    vntMemory = pvavntArray(1, (lngIndex1 + lngIndex2) \ 2)
    
    Do
        
        Do While pvavntArray(1, lngIndex1) < vntMemory
            lngIndex1 = lngIndex1 + 1
        Loop
        
        Do While vntMemory < pvavntArray(1, lngIndex2)
            lngIndex2 = lngIndex2 - 1
        Loop
        
        If lngIndex1 <= lngIndex2 Then
            
            For lngColumn = LBound(pvavntArray, 1) To UBound(pvavntArray, 1)
                
                vntBuffer = pvavntArray(lngColumn, lngIndex1)
                pvavntArray(lngColumn, lngIndex1) = pvavntArray(lngColumn, lngIndex2)
                pvavntArray(lngColumn, lngIndex2) = vntBuffer
                
            Next
            
            lngIndex1 = lngIndex1 + 1
            lngIndex2 = lngIndex2 - 1
            
        End If
    Loop Until lngIndex1 > lngIndex2
    
    If pvlngLBound < lngIndex2 Then Call QuickSort(pvlngLBound, lngIndex2, pvavntArray)
    If lngIndex1 < pvlngUBound Then Call QuickSort(lngIndex1, pvlngUBound, pvavntArray)
    
End Sub

Gruß
Nepumuk
Anzeige
AW: VBA Array sortieren
26.05.2017 18:47:11
Herbert
Hallo Nepumuk,
vielen Dank für Deinen Code. Ich kann ihn allerdings erst morgen ausprobieren, denn jetzt ist "Relegation" meiner "Löwen"!
Ich gebe Dir morgen Bescheid.
Servus
AW: VBA Array sortieren
27.05.2017 10:38:29
Herbert
Hallo Nepumuk,
nochmals herzlichen Dank für Deine Sortierroutine, die natürlich wunderbar funktioniert.
Ich muss gestehen, dass ich es noch immer nicht verstanden habe. Aber ich werde mir noch einmal, was ich auch vor meiner Anfrage hier schon erfolglos getan habe, Deine Ausführungen zu diesem Thema auf Peters HP zu Gemüte führen, vielleicht kapiere ich es ja doch noch irgendwie, irgendwann!!! ;o)=)
Servus
Anzeige
Dazu...
29.05.2017 12:45:13
Michael
Herbert,
...was ein QuickSort ist und macht liest sich mE hier auch gut nach https://de.wikipedia.org/wiki/Quicksort (als Startpunkt)
Hat ja nicht nur was mit Excel bzw. Arrays zu tun...
LG
Michael

7 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige