Nach angekreuzter Spalte sortieren
#1
Guten Abend ihr Lieben,

ich bin leider weder bei Google, noch hier über die Suchfunktion fündig geworden...Zum Teil aber vielleicht auch, da ich nicht wusste, wie man das Problem am besten formuliert. Deshalb hier mit Bildern ;)
Ich habe eine Teilnehmerliste, in der an einem Tag mehrere "Lektionen" stattfinden. Jeder Teilnehmer kommt am gleichen Tag aber zu einer verschiedenen Uhrzeit. Ich würde nun natürlich gern in Vorbereitung auf die Veranstaltung alle Teilnehmer nach Uhrzeit "stufenweise" und auch nach Alphabet sortieren. Klingt eigentlich total simpel, aber macht mich grad bekloppt ^^
Zur Not muss ich per Filter Funktion nacheinander die Uhrzeiten rausfiltern und ausdrucken, ist aber nicht das Gelbe vom Ei...

Ausgangssituation:

   

Gewünschtes Ergebnis:

   

Liebe Grüße,
moni
Top
#2
Hi Moni,

Daten==> Sortieren

[
Bild bitte so als Datei hochladen: Klick mich!
]

Ankreuzen, dass deine Tabelle Überschriften enthält, danach die Sortierreihenfolge (jeweils mit "Ebene hinzufügen") auswählen und mit OK betätigen. Dann sieht's so aus:

[
Bild bitte so als Datei hochladen: Klick mich!
]

Falls du VBA verwenden darfst, kannst du den Vorgang einmalig mit dem Makrorekorder aufzeichnen und das Makro einer Schaltfläche zuweisen. Dann geht dein Sortieren mit einem einzigen Knopfdruck.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
[-] Folgende(r) 1 Nutzer sagt Danke an WillWissen für diesen Beitrag:
  • Moni
Top
#3
Hallo,

-alles markieren
-sortieren aufrufen
-Benutzerdefiniertes sortieren wählen
-Rechts Haken bei "Daten haben Überschrift"
-bei sortieren nach "11 Uhr" wählen
-oben "Ebene hinzufügen"
-danach nach "12 Uhr" wählen usw.

Am Ende mit Ok bestätigen

[
Bild bitte so als Datei hochladen: Klick mich!
]

oder diesen Code ausführen:
Code:
Sub sortieren()

  Dim lngZ As Long

  With ActiveWorkbook.Worksheets("Tabelle1")
    lngZ = .Cells(.Rows.Count, 1).End(xlUp).Row
    With .Sort
      .SortFields.Clear
      .SortFields.Add Key:=Range("B1:B" & lngZ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
      .SortFields.Add Key:=Range("C1:C" & lngZ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
      .SortFields.Add Key:=Range("D1:D" & lngZ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
      .SortFields.Add Key:=Range("D1:D" & lngZ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange Range("A1:E" & lngZ)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
      End With
  End With
 
End Sub
Ok, Günter war schneller. Aber doppelt gehoppelt hält besser.
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • Moni
Top
#4
Hi Moni,

was sowohl Atilla als auch ich übersehen haben, ist, dass du auch die Namen alphabethisch sortiert haben willst. Dann musst du einfach als z.B. erste Ebene "sortieren nach Name" ankreuzen.

[
Bild bitte so als Datei hochladen: Klick mich!
]

Atillas Makro muss dann noch so angepasst werden:


Code:
Sub sortieren()

 Dim lngZ As Long

 With ActiveWorkbook.Worksheets("Tabelle1")
   lngZ = .Cells(.Rows.Count, 1).End(xlUp).Row
   With .Sort
     .SortFields.Clear
     .SortFields.Add Key:=Range("A1:A" & lngZ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
     .SortFields.Add Key:=Range("B1:B" & lngZ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
     .SortFields.Add Key:=Range("C1:C" & lngZ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
     .SortFields.Add Key:=Range("D1:D" & lngZ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
     .SortFields.Add Key:=Range("D1:D" & lngZ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
       .SetRange Range("A1:E" & lngZ)
       .Header = xlYes
       .MatchCase = False
       .Orientation = xlTopToBottom
       .SortMethod = xlPinYin
       .Apply
     End With
 End With

End Sub
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
[-] Folgende(r) 1 Nutzer sagt Danke an WillWissen für diesen Beitrag:
  • Moni
Top
#5
Oooh das ging fix, vielen lieben Dank Euch!! Hat alles geklappt! Ich war zwar schon in der einigermaßen richtigen Richtung unterwegs, habe aber nicht weit genug "reingeklickt"... Blush 
Dankeee und ein tolles Restwochenende!
Top
#6
Moin,
als Alternative bietet sich (ab Excel 2010) auch Power Query (ja, mein neues Lieblings-Spielzeug Wink) an. 
Nach dem laden in den Editor von rechts nach links jede Spalte aufsteigend sortieren. 
Und bei geänderter Datenquelle einfach (nur) auf Aktualisieren klicken.
Weiterer Vorteil: Du kannst für die 4 Zeit-Blöcke ruck zuck einzelne Tabellenblätter erstellen und dann ausdrucken lassen.
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Top


Gehe zu:


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