Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
980to984
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
980to984
980to984
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Daten sortieren, 0 unten anstellen

Daten sortieren, 0 unten anstellen
23.05.2008 15:46:19
mtremer
Hallo Excel-Freunde,
mit dem Recorder habe ich folgenden Code aufgezeichnet:
Rows("4:3000").Select
Selection.Sort Key1:=Range("B4"), Order1:=xlAscending, Key2:=Range("E4") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal
Hiermit werden meine Daten in der Reihenfolge B und D aufsteigend sortiert. Allerdings ist das Ergebnis, dass Zeilen mit einer 0 in B vor denen mit Text angezeigt werden.
Wie bekomme ich es hin, dass erst die Zeilen mit Text und dann die Zeilen mit einer 0 angezeigt werden?
Beispiel:
Ausgangssituation
0
Text
Text
0
Text
Ergebnis
Text
Text
Text
0
0
Danke.
Viele Grüße
Marco

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
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


Anzeige
AW: Daten sortieren, 0 unten anstellen
23.05.2008 16:38:00
mtremer
Hallo Franz,
das sieht ja abenteuerlich aus. Daniel hat mich aber auf eine bessere Idee gebracht:
Die 0 ist ein Ergebnis einer Formel. Wenn ich eine Wennfunktion drum herum bastele (wenn 0 dann "") klappt die Sortierung wieder.
Trotzdem danke für Deine Antwort.
Viele Grüße
Marco

AW: Daten sortieren, 0 unten anstellen
23.05.2008 16:53:43
fcs
Hallo Marco,
wieso sieht das abenteuerlich aus?
1 mal sortieren
1 mal Suchen
1 mal abhängig vom Suchergebnis sortieren
ob die Hälfte der Parameter in deinem aufgezeichneten Sortiercode überflüssig ist kann ich von hier nicht beurteilen. Deshalb hab ich sie nicht gelöscht.
Wenn du lieber mit Select und ggf. Activate arbeitest, dann ist das deine Sache.
Ich bevorzuge Objektvariablen. Das hilft mir jedenfals enorm bei der übersichtlichen Gestaltung von von Prozeduren.
Gruß
Franz

Anzeige
AW: Daten sortieren, 0 unten anstellen
23.05.2008 17:07:00
mtremer
Oh jeh, ich hoffe, ich habe Dich nicht angegriffen.
Ich bin ein Freund von "einfachen" Lösungen. Da ich nicht allzuviel Ahnung von VBA habe, konnte ich nicht viel aus Deinem Code erkennen. Deine Lösung und auch den Weg dorthin konnte ich also auf die Schnelle nicht beurteilen.
Ich entschuldige mich, da ich einen für mich im ersten Moment als "lange" Lösung erschienenden Code als abenteuerlich bezeichnet hatte.
Schönes Wochenende und viele Grüße
Marco

AW: Daten sortieren, 0 unten anstellen
23.05.2008 16:15:48
Daniel
Hi
so direkt kann man da nichts machen, das ist halt die Excel-Sortierreihenfolge
Zahlen vor Zeichen vor Wahrheitswerten vor Leerzellen.
wenn die 0 so erhalten bleiben sollen, dann bleibt dir nur folgendes:
- Absteigend sortieren, dann stehen die Texte vor den Zahlen (die Texte sind dann halt auch absteigend sortiert und du müsstest, falls das nicht gewünscht ist, innerhalb der Texte dann nochmal umsortieren)
oder
- Hilfsspalte einfügen mit dieser Formel =Wenn(B4=0;WAHR;B4) und dann nach diese Hilfsspalte sortiern. In der Hilfsspalte steht dann anstelle von 0 ein Wahrheitswert und der kommt bei der normalen Sortierung ans Ende (vielleicht reicht auch ein Leerstring ("") anstelle des Wahrheitswertes)
Gruß, Daniel

Anzeige
AW: Daten sortieren, 0 unten anstellen
23.05.2008 16:40:00
mtremer
Hallo Daniel,
Die 0 ist ein Ergebnis einer Formel. Wenn ich eine Wennfunktion drum herum bastele (wenn 0 dann "") klappt die Sortierung wieder.
Danke für den Tip.
Viele Grüße
Marco

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige