AW: Daten sortieren, 0 unten anstellen
23.05.2008 16:15:00
fcs
Hallo Marco,
dazu muss du die Daten erst absteigend sortieren,
Dann in Spalte B die nach dem 1. Nullwert suchen.
Dann die Zeilen bis oberhalb des 1. 0-Werts wieder aufsteigend sortieren.
Schaut dann etwa wie folgt aus.
Gruß
Franz
Sub Sort_0_hinten()
Dim objWks As Worksheet, objBereich As Range
Set objWks = ActiveSheet
With objWks
Set objBereich = .Range(.Rows(4), .Rows(3000))
'Sortieren absteigend, sortiert 0-Werte nach hinten
objBereich.Sort Key1:=.Range("B4"), Order1:=xlDescending, Key2:=.Range("E4"), _
Order2:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal
'1. Zelle mit 0-Wert in Spalte B suchen
Set objBereich = .Range(.Cells(4, 2), .Cells(.Rows.Count, 2).End(xlUp)).Find _
(What:=0, LookIn:=xlValues, lookat:=xlWhole)
If Not objBereich Is Nothing Then
'Falls 0-Wert vorhanden, dann Bereich bis Nullwert sortieren
Set objBereich = .Range(.Rows(4), .Rows(objBereich.Row))
objBereich.Sort Key1:=.Range("B4"), Order1:=xlAscending, Key2:=.Range("E4"), _
Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal
Else
'Bereich wieder AUfsteigend sortieren
Set objBereich = .Range(.Rows(4), .Rows(3000))
objBereich.Sort Key1:=.Range("B4"), Order1:=xlAscending, Key2:=.Range("E4"), _
Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal
End If
End With
End Sub