Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: 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

Anzeige

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

Anzeige
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

Anzeige
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

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Daten in Excel sortieren: 0 unten anstellen


Schritt-für-Schritt-Anleitung

Um Daten in Excel so zu sortieren, dass die 0-Werte am Ende stehen, kannst du folgende Schritte befolgen:

  1. Daten absteigend sortieren: Sortiere die Daten zunächst absteigend, damit die Texte vor den Zahlen stehen.

    Sub Sort_0_hinten()
       Dim objWks As Worksheet, objBereich As Range
       Set objWks = ActiveSheet
       With objWks
           Set objBereich = .Range(.Rows(4), .Rows(3000))
           objBereich.Sort Key1:=.Range("B4"), Order1:=xlDescending, Key2:=.Range("E4"), _
           Order2:=xlDescending, Header:=xlGuess, Orientation:=xlTopToBottom
       End With
    End Sub
  2. Ersten Nullwert finden: Suche nach dem ersten Vorkommen der 0 in der Spalte B.

  3. Bereich bis zur 0 wieder aufsteigend sortieren: Sortiere die Daten bis zur ersten 0 erneut aufsteigend.

  4. Falls keine 0 vorhanden ist: Sortiere den gesamten Bereich wieder aufsteigend.


Häufige Fehler und Lösungen

  • Fehler: 0-Werte werden vor Text angezeigt.

    • Lösung: Sortiere die Daten zuerst absteigend, um die Texte vor den 0-Werten zu platzieren.
  • Fehler: Fehler bei der Verwendung von Formeln.

    • Lösung: Wenn die 0 ein Ergebnis einer Formel ist, kannst du die WENN-Funktion verwenden, um 0 durch einen Leerstring zu ersetzen.

Alternative Methoden

  1. Hilfsspalte verwenden: Eine Hilfsspalte kann helfen, die 0-Werte zu verbergen. Füge eine Formel wie =WENN(B4=0;WAHR;B4) in eine neue Spalte ein und sortiere nach dieser Spalte.

  2. Sortieren nach Zahlen aufsteigend: Du kannst auch die Standard-Sortierfunktion in Excel verwenden, um die Werte aufsteigend zu sortieren, nachdem du die Hilfsspalte hinzugefügt hast.


Praktische Beispiele

Angenommen, du hast folgende Daten in Spalte B:

B4: 0
B5: Text1
B6: Text2
B7: 0
B8: Text3

Nach der Anwendung der oben genannten Schritte solltest du folgendes Ergebnis erhalten:

B4: Text1
B5: Text2
B6: Text3
B7: 0
B8: 0

Tipps für Profis

  • Nutze Objektvariablen für eine übersichtlichere und effizientere Programmierung in VBA.
  • Vermeide es, die Select- und Activate-Methoden zu verwenden, da sie den Code unnötig verkomplizieren können.
  • Experimentiere mit verschiedenen Sortieroptionen in Excel, um die gewünschten Ergebnisse zu erzielen.

FAQ: Häufige Fragen

1. Wie sortiere ich Daten in Excel, sodass 0-Werte am Ende stehen?
Du kannst zuerst die Daten absteigend sortieren und dann die Werte bis zur ersten 0 aufsteigend sortieren.

2. Welche Excel-Version benötige ich für diese Methoden?
Die beschriebenen Methoden funktionieren in den meisten aktuellen Excel-Versionen, einschließlich Excel 2010 und höher.

3. Was mache ich, wenn die 0-Werte durch Formeln erzeugt werden?
Verwende die WENN-Funktion, um die 0-Werte durch einen Leerstring zu ersetzen, damit sie bei der Sortierung nicht berücksichtigt werden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige