Private Sub Worksheet_Activate()
'--- Spalte C nach K kopiern und sortieren
Range("K:K").ClearContents
Range("C5:C" & Cells(Rows.Count, 3).Row).Copy
Range("K2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("K:K").Sort key1:=Range("K2"), order1:=xlAscending, header:=xlYes
End Sub
Mein Problem:
Weil die Namen in Spalte C über Formeln eingetragen werden, werden nach dem Sortieren in K oben zuerst die Leerzellen mitberücksichtigt. Eigentlich sollten ab K2 gleich die Namen angeführt werden.
Eine Frage:
Was bedeutet die 3 in "Range("C5:C" & Cells(Rows.Count, 3).Row).Copy"
hier noch die Tabelle:
https://www.herber.de/bbs/user/53368.xls
Besten Dank und Servus, Walter
Sub Anders()
Dim ArrayStamm() As Variant, ArrayZiel() As Variant
Dim x As Long, ii As Long, z As Long
Dim OG&, i&, j&, k&, h, y, r As Variant
ReDim ArrayStamm(1 To Cells(Rows.Count, 3).End(xlUp).Row - 4)
For ii = 5 To Cells(Rows.Count, 3).End(xlUp).Row
ArrayStamm(ii - 4) = Cells(ii, 3)
Next ii
x = 0
For z = LBound(ArrayStamm()) To UBound(ArrayStamm())
If ArrayStamm(z) <> "" Then
ReDim Preserve ArrayZiel(x)
ArrayZiel(x) = ArrayStamm(z)
x = x + 1
End If
Next z
OG = UBound(ArrayZiel())
k = OG \ 2
While k > 0
For i = LBound(ArrayZiel()) To OG - k
j = i
While (j >= 0) And (ArrayZiel(j) > ArrayZiel(j + k))
h = ArrayZiel(j)
ArrayZiel(j) = ArrayZiel(j + k)
ArrayZiel(j + k) = h
If j > k Then
j = j - k
Else
j = LBound(ArrayZiel())
End If
Wend
Next i
k = k \ 2
Wend
For z = LBound(ArrayZiel()) To UBound(ArrayZiel())
Cells(z + 2, 11) = ArrayZiel(z)
Next z
End Sub
In diesem Code werden die leeren Zellen im Array aussortiert und der Rest auch im Array sortiert. Dieser wird dann nach K2 geschrieben.
Gruß
Chris