Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

Spalten alphabetisch sortieren & leere Zellen am Ende Stellen
#1
Hi zusammen,

Ich habe folgendes Thema, in den Zellen E1 bis S1 habe ich Namen stehen und darunter vielen Daten. 
Mit folgenden Code sortiere ich die Spalten alphanbetisch:

Code:
Sub testSortierung()
ThisWorkbook.Sheets("test").Unprotect
    Range("E1:S486").Select
    ActiveWorkbook.Worksheets("test").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("test").Sort.SortFields.Add2 Key:=Range( _
        "E1:S1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("test").Sort
        .SetRange Range("E1:S486")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlLeftToRight
        .SortMethod = xlPinYin
        .Apply
    End With
ThisWorkbook.Sheets("test").Protect
MsgBox "Sortierung erfolgreich abgeschlossen!"
End Sub

Das Problem ist, dass leere Zellen am Anfang, also links gestellt werden, ich brauche diese aber am Ende rechts. Also A,B,C etc. und die leeren Zellen am Ende der Zeile.
Wie muss ich den Code ändern, damit er das tut? :)

Herzlichen Dank im Voraus
LG
Alexandra
Antworten Top
#2
Hallo,

die Spalten werden anhand der Inhalte von Zeile 1 sortiert.
Wenn Du leere Zellen anderswo haben willst, geht der Spatenzusammenhang verloren.
Sortiere jede Zeile einzeln, wenn das egal ist.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#3
Hallo Andre,

was meinst du damit, der Spaltetusammenhang geht verloren? Es wird doch der gesamte Bereich markiert und die Spalten werden komplett im Bereich sortiert nach den Inhalten in Zeile 1? Nur eben, das in E1 statt der erste Name der nach Alphabet an erste Stelle stehen sollte sind erstmal die ganzen Spalten nach Links sortiert worden die in Zeile 1 leer sind! Diese sollen aber erst am Ende nach dem nach dem Alphabet vorhandenen letzten Name. Also z.B. in E1 steht Alex in F1 ist leer und G1 steht Zoro. Dann sollte die Reihenfolge wie folgt sein:
E1 Alex
F1 Zoro
G1 leer

und nicht
E1 leer
F1 Alex
G1 Zoro

Ich hoffe jetzt ist es verständlicher!  :)

Vielen Dank & LG, Alexandra
Antworten Top
#4
"Zelle wirklich leer" und "formelmäßig oder -geplättet leer" ist ein Unterschied. Wenn Deine Leerzellen also beim Sort nicht am Ende stehen, liegt letzteres vor.
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Antworten Top
#5
Um LCohen zuzustimmen:
"Echte" Leerzellen werden korrekt sortiert.
Übrigens nehme ich "immer noch" die Range.Sort-Methode statt des Worksheets.Sort-Objekts.
Damit dampfe ich den Code auf eine Zeile ein.

Vorher:
EFGH
1KlausBernd
2Z2S5Z2S6Z2S7
3Z3S5Z3S6Z3S7
4Z4S5Z4S6Z4S7
5Z5S5Z5S6Z5S7
6Z6S5Z6S6Z6S7
7Z7S5Z7S6Z7S7
8Z8S5Z8S6Z8S7
9Z9S5Z9S6Z9S7
10Z10S5Z10S6Z10S7

Code-Einzeiler:
Sub Spaltensort()
Range("E1:S486").Sort Range("E1"), Orientation:=xlSortRows
End Sub

Ergibt:
EFGH
1BerndKlaus
2Z2S7Z2S5Z2S6
3Z3S7Z3S5Z3S6
4Z4S7Z4S5Z4S6
5Z5S7Z5S5Z5S6
6Z6S7Z6S5Z6S6
7Z7S7Z7S5Z7S6
8Z8S7Z8S5Z8S6
9Z9S7Z9S5Z9S6
10Z10S7Z10S5Z10S6

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#6
Hallöchen,

also, wenn die leeren nur in Zeile 1 am Ende stehen sollen, hat LCohen recht.

Wenn es Dir jedoch darum geht, in jeder Zeile die leeren am Ende zu haben - so habe ich das aufgefasst -, dann gibt es ein anderes Problem und das meinte ich mit dem Spaltenzusammenhang. Nehmen wir mal das "normale" Sortieren.

Erstelle eine zweispaltige Liste mit Namen und Vornamen. Lasse bei einigen die Vornamen weg. Teste verschiedene Varianten des Sortierens, bis die "leeren" Vornamen am Ende stehen.
(Stelle Dir dann die Frage, ob das in dieser Tabelle sinnvoll ist)
Falls sich die zusammengehörenden Namen und Vornamen schlecht merken lassen, kannst Du auch zusammenhängende Substantive auf zwei Spalten verteilen und bei einigen die zweite Spalte frei lassen. Im Sinne eines Kinderbuchs mit Tierbildern, das in der Mitte geteilt war sodass man die Hälften einzeln blättern konnte - nimm Kroko-dil, Ele-fant, Nas-horn, Eis-bär usw Smile 

Unabhängig davon - wenn es in den Zeilen auch wieder Formeln gibt sind wir darüber hinaus wieder bei LCohens Hinweis.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#7
(29.10.2022, 08:16)schauan schrieb: Im Sinne eines Kinderbuchs mit Tierbildern, das in der Mitte geteilt war sodass man die Hälften einzeln blättern konnte - nimm Kroko-dil, Ele-fant, Nas-horn, Eis-bär usw Smile 

Klasse!
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Antworten Top
#8
Hallo LCohen, hallo Andre, hallo Ralf,

DANKE!!! Das war es, da waren Formeln in den Zellen, deswegen hat es nicht so funktioniert wie ich wollte. Aber nun funktioniert es so wie es soll. :)

Vielen lieben Dank für Eure Hilfe!!
LG
Alexandra
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste