Sub
SortData()
Dim
rng
As
Range, cl
As
Range
Dim
data()
As
Double
Dim
iCnt
As
Integer
Set
rng = ActiveWorkbook.Names(
"Daten"
).RefersToRange
iCnt = -1
For
Each
cl
In
rng.Cells
iCnt = iCnt + 1
ReDim
Preserve
data(iCnt)
data(iCnt) = Val(cl.Formula)
Next
QuickSort data, 0, UBound(data)
InsertData data, 1
End
Sub
Sub
InsertData(
ByRef
arData
As
Variant
, iColumn
As
Integer
)
Dim
sh
As
Worksheet
Dim
vItem
As
Variant
Dim
iRw
As
Integer
Set
sh = ActiveWorkbook.Worksheets(
"Tabelle2"
)
For
Each
vItem
In
arData
iRw = iRw + 1
sh.Cells(iRw, iColumn).FormulaR1C1 = vItem
Next
End
Sub
Private
Sub
QuickSort( _
ByRef
ArrayToSort
As
Variant
, _
ByVal
Low
As
Long
, _
ByVal
High
As
Long
)
Dim
vPartition
As
Variant
, vTemp
As
Variant
Dim
i
As
Long
, j
As
Long
If
Low > High
Then
Exit
Sub
vPartition = ArrayToSort((Low + High) \ 2)
i = Low: j = High
Do
Do
While
ArrayToSort(i) < vPartition
i = i + 1
Loop
Do
While
ArrayToSort(j) > vPartition
j = j - 1
Loop
If
i <= j
Then
austauschen:
vTemp = ArrayToSort(j)
ArrayToSort(j) = ArrayToSort(i)
ArrayToSort(i) = vTemp
i = i + 1
j = j - 1
End
If
Loop
Until
i > j
If
(j - Low) < (High - i)
Then
QuickSort ArrayToSort, Low, j
QuickSort ArrayToSort, i, High
Else
QuickSort ArrayToSort, i, High
QuickSort ArrayToSort, Low, j
End
If
End
Sub