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