AW: wie erstelle ich ein Array?
27.11.2008 16:17:00
Tino
Hallo,
habe Dir hier noch ein Beispiel mit dem erweiterten Quicksort aufgebaut.
Option Explicit
Dim sArray As Variant
Sub TestLeseArea_Sort()
Dim Bereich As Range
Set Bereich = Range("A1", Cells(Rows.Count, "C").End(xlUp))
sArray = Bereich
'Syntax: "Pos erstes Element", "Pos letztes Element", "Sortierspalte"
QuickSort Lbound(sArray), Ubound(sArray), 1 'Arrea Sortieren
Bereich.Offset(0, 4) = sArray 'sortierte Area in einen Bereich schreiben
Erase sArrea 'Area wieder löschen
End Sub
Sub QuickSort(ByVal MinElem As Long, MaxElem As Long, lngCol As Long)
Dim Mitte As Long
Dim vDummy As Variant
Dim i As Long, j As Long, A As Long
If MinElem > MaxElem Then
Exit Sub
End If
Mitte = (MinElem + MaxElem) \ 2
i = MinElem
j = MaxElem
Do
Do While sArray(i, lngCol) < sArray(Mitte, lngCol)
i = i + 1
Loop
Do While sArray(j, lngCol) > sArray(Mitte, lngCol)
j = j - 1
Loop
If i <= j Then
For A = 1 To Ubound(sArray, 2)
vDummy = sArray(j, A)
sArray(j, A) = sArray(i, A)
sArray(i, A) = vDummy
Next A
i = i + 1
j = j - 1
End If
Loop Until i > j
QuickSort MinElem, j, lngCol
QuickSort i, MaxElem, lngCol
End Sub
Ich hoffe Du kommst damit klar, Rückmeldung wäre nett.
Gruß Tino
www.VBA-Excel.de