Zeilen absteigend sortieren

Liebe ExcelianerInnen,

ich möchte noch mal auf meine Anfrage „Zeilen verdoppeln / kopieren“ zurückkommen. Es hindert mich noch etwas am zügigen arbeiten.

Wie dort beschrieben, sind die Zeilen ab E2:E600 unterschiedlich lang gefüllt, mal E2:F2, mal E2:AD2, manchmal sogar leer. Leider nicht sortiert.

Ich habe jetzt mal probiert, 2 markierte Zeilen mit dem Sortierbefehl absteigend zu sortieren. Leider wurden dann in der kürzer gefüllten Zeile die mitmarkierten leeren Zellen vorangestellt.

Habt ihr eine Idee, wie man diese vorangestellten leeren Zellen vermeiden kann? Gibt es eine Möglichkeit, die Zeilen jeweils nur so weit zu markieren, wie die Einträge reichen, um dann zu sortieren?

Für eventuelle Antworten möchte ich jetzt schon bedanken.

Freundliche Grüße

Jorge

Grüezi Jorge

ich möchte noch mal auf meine Anfrage „Zeilen verdoppeln /
kopieren“ zurückkommen. Es hindert mich noch etwas am zügigen
arbeiten.

Mit dem dort beschriebenen Problem hat dies hier aber nichts mehr zu tun, oder?

Wie dort beschrieben, sind die Zeilen ab E2:E600
unterschiedlich lang gefüllt, mal E2:F2, mal E2:AD2, manchmal
sogar leer. Leider nicht sortiert.

Ich habe jetzt mal probiert, 2 markierte Zeilen mit dem
Sortierbefehl absteigend zu sortieren. Leider wurden dann in
der kürzer gefüllten Zeile die mitmarkierten leeren Zellen
vorangestellt.

Ja, bei einer Markierung wird diese komplett und zusammenhängend sortiert, das ist normal und richtig so.

Habt ihr eine Idee, wie man diese vorangestellten leeren
Zellen vermeiden kann? Gibt es eine Möglichkeit, die Zeilen
jeweils nur so weit zu markieren, wie die Einträge reichen, um
dann zu sortieren?

Eine Zelle in Spalte E markieren, Umschalt+STRG+Pfeil nach rechts drücken, dann werden alle enthaltenen Daten markiert.

Was genau ist dein Ziel bei dem Ganzen?
Willst Du Zeile für Zeile sortieren?

Das ist manuell recht viel Arbeit - man könnte das Ganze auch mit VBA-Programmierung automatisieren.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Gruezi Thomas

ich möchte noch mal auf meine Anfrage „Zeilen verdoppeln /
kopieren“ zurückkommen. Es hindert mich noch etwas am zügigen
arbeiten.

Mit dem dort beschriebenen Problem hat dies hier aber nichts
mehr zu tun, oder?

Na, ja. Vielleicht könnte man die Lösung von Reinhard erweitern. Oder ergänzen: erst die Verdopplung der Zeilen, anschließend die Sortierung der Zeilen.

Was genau ist dein Ziel bei dem Ganzen?
Willst Du Zeile für Zeile sortieren?

Das ist manuell recht viel Arbeit - man könnte das Ganze auch
mit VBA-Programmierung automatisieren.

Genau das war meine Frage. Manuell Zeile für Zeile könnte ich es ja (obwohl ich diesen shortcut noch nicht kannte…), aber wie du schreibst, das wäre viel Arbeit.

Wenn das mit einfachen Bordmitteln nicht geht, wäre ich natürlich über eine VBA-Lösung dankbar.

Liebe Grüße

Jorge

Grüezi Jorge

Der folgende Code sortiert dir jede Zeile ab A1 solange in Spalte A ein Wert drin steht - den Bereich kann man noch entsprechend anpassen, wenn nötig:

Public Sub RowSort()
Dim rngBereich As Range
Dim rngZeile As Range

 Set rngBereich = Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)

 For Each rngZeile In rngBereich.Rows

 Set rngZeile = Range(rngZeile, rngZeile.End(xlToRight))

 ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Clear
 ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Add Key:=rngZeile \_
 , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
 With ActiveWorkbook.Worksheets("Tabelle1").Sort
 .SetRange rngZeile
 .Header = xlNo
 .MatchCase = False
 .Orientation = xlLeftToRight
 .SortMethod = xlPinYin
 .Apply
 End With

 Next rngZeile
End Sub

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Lieber Thomas,

herzlichen Dank für deine Antwort. Ich werde die VBA erst am Montag ausprobieren können.

Du schreibst, ab A1 wird sortiert. Kann ich "A1:A " in „E4:E“ ändern, denn es soll erst ab E4 sortiert werden? „E1:E3 ff“ sollen unverändert bleiben. Ich habe gerade gesehen, dass ich das nicht erwähnt hatte. *peinlich*.

Liebe Grüße

Jorge

Grüezi Jorge

Ich habe das nun nicht geprüft, aber ja, das sollte passen.

Verändere in der Range-Angabe überall den Buchstaben ‚A‘ in ‚E‘ und beginne auch erst in E4.

Wenns dann noch nicht klappt, versuchen wir es nochmals anders.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Gruezi Thomas,

endlich habe ich Zeit gefunden, deinen Vorschlag auszuprobieren.
Ich habe ein Modul 2 hinzugefügt und die VBA eingefügt.

Aber weder mit der Änderung nach „E“ noch mit deinem Original klappt es.
Folgende Zeile wird in gelb markiert:

„ActiveWorkbook.Worksheets(„Tabelle1“).Sort.SortFields.Clear“

Laufzeitfehler 438
Objekt unterstützt diese Eigenschaft oder Methode nicht.

Der Tabellenname ist korrekt. Habe ich was falsch gemacht?

Liebe Grüße

Jorge

mehr auf http://w-w-w.ms/a4cda2

Grüezi Jorge

Hmmmm, mit welcher Excel-Version arbeitest du denn?

Ich habe den Code in xl2007 aufgezeichnet und angepasst. Wenn du eine ältere Version verwendest, dann werden da einige Methoden nicht unterstützt weil es diese damals noch gar nicht gegeben hatte.

In diesem Falle müsste ich den Code nochmals umschreiben.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Ich arbeite mit 2003.
Tut mir Leid, dass ich vergessen habe, das mitzuteilen.

LG
Jorge

Grüezi Jorge

Ich arbeite mit 2003.
Tut mir Leid, dass ich vergessen habe, das mitzuteilen.

Ja, das ist hier mal wieder entscheidend, da ab xl2007 neue Methoden hinzu gekommen sind, die dann halt in xl2003 nicht funktionieren.

Hier der Code, den ich nun in xl2003 erstellt und getestet habe:

Public Sub RowSort()
Dim rngBereich As Range
Dim rngZelle As Range
Dim rngZeile As Range

 Set rngBereich = Range("E4:E" & Range("E" & Rows.Count).End(xlUp).Row)

 For Each rngZelle In rngBereich.Rows

 Set rngZeile = Range(rngZelle, rngZelle.End(xlToRight))

 rngZeile.Sort \_
 Key1:=rngZelle, \_
 Order1:=xlAscending, \_
 Header:=xlNo, \_
 OrderCustom:=1, \_
 MatchCase:=False, \_
 Orientation:=xlLeftToRight, \_
 DataOption1:=xlSortNormal
 Next rngZelle
End Sub

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -