Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Makro zum Sortieren

Makro zum Sortieren
Jonathan
Hey,
könnte mir jemand bitte, bitte mein aufgezeichnetes MAkro überarbeiten?
Ich habe die Sortierung meines Sheets "Daten" aufgezeichnet, diese sieht aber absolut unübersichtlich aus. Würde mich freuen, wenn Ihr mir dieses kurz anpassen könntet?
Danke!!!!!

ActiveWorkbook.Worksheets("Daten").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Daten").AutoFilter.Sort.SortFields.Add Key:=Range( _
"B2:B210"), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
"Januar,Februar,März,April,Mai,Juni,Juli,August,September,Oktober,November,Dezember" _
, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Daten").AutoFilter.Sort.SortFields.Add Key:=Range( _
"F2:F210"), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
"Übertrag,Einnahme,Ausgabe,Rückstellungen", DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Daten").AutoFilter.Sort.SortFields.Add Key:=Range( _
"G2:G210"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Daten").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Makro zum Sortieren
14.01.2010 23:42:38
Josef
Hallo Jonathan,
natürlich ungetestet.
With ActiveWorkbook.Worksheets("Daten").AutoFilter.Sort
  With .SortFields
    .Clear
    .Add Key:=Range("B2:B210"), SortOn:=xlSortOnValues, _
      Order:=xlAscending, DataOption:=xlSortNormal, _
      CustomOrder:="Januar,Februar,März,April,Mai,Juni,Juli,August,September,Oktober,November,Dezember"
    .Add Key:=Range("F2:F210"), SortOn:=xlSortOnValues, _
      Order:=xlAscending, DataOption:=xlSortNormal, _
      CustomOrder:="Übertrag,Einnahme,Ausgabe,Rückstellungen"
    .Add Key:=Range("G2:G210"), SortOn:=xlSortOnValues, _
      Order:=xlAscending, DataOption:=xlSortNormal
  End With
  .Header = xlYes
  .MatchCase = False
  .Orientation = xlTopToBottom
  .SortMethod = xlPinYin
  .Apply
End With

Gruß Sepp

Anzeige
AW: Makro zum Sortieren
15.01.2010 00:16:03
Jonathan
Super, danke!
Das ist echt so super nett von Euch, dass Ihr so schnell und fachmännisch Fragen beantwortet - danke!
Ist es irgendwie möglich, den Bereich der Tabelle auf die letzte Zeile anzupassen?
Habe ds hier gefunden:
(Cells.SpecialCells(xlLastCell).Row

weiß aber nicht, wie ich das einbinden muss.....
Anzeige
AW: Makro zum Sortieren
15.01.2010 00:22:26
Josef
Hallo Jonathan,
meinst du so?
Dim lngLast As Long

With ActiveWorkbook.Worksheets("Daten")
  lngLast = Application.Max(2, .Cells(.Rows.Count, 1).End(xlUp).Row)
  With .AutoFilter.Sort
    With .SortFields
      .Clear
      .Add Key:=Range("B2:B" & CStr(lngLast)), SortOn:=xlSortOnValues, _
        Order:=xlAscending, DataOption:=xlSortNormal, _
        CustomOrder:="Januar,Februar,März,April,Mai,Juni,Juli,August,September,Oktober,November,Dezember"
      .Add Key:=Range("F2:F" & CStr(lngLast)), SortOn:=xlSortOnValues, _
        Order:=xlAscending, DataOption:=xlSortNormal, _
        CustomOrder:="Übertrag,Einnahme,Ausgabe,Rückstellungen"
      .Add Key:=Range("G2:G" & CStr(lngLast)), SortOn:=xlSortOnValues, _
        Order:=xlAscending, DataOption:=xlSortNormal
    End With
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
  End With
End With

Gruß Sepp

Anzeige
AW: Makro zum Sortieren
15.01.2010 00:34:17
Jonathan
Scheint zu funktionieren! ;-)
Danke!!
LG
;
Anzeige
Anzeige

Infobox / Tutorial

Makro zum Sortieren von Daten in Excel


Schritt-für-Schritt-Anleitung

Um ein einfaches Makro zur Sortierung von Daten in Excel zu erstellen, folge diesen Schritten:

  1. Öffne das Excel-Dokument, in dem Du die Daten sortieren möchtest.
  2. Gehe zu Entwicklertools und wähle Visual Basic.
  3. Erstelle ein neues Modul, indem Du mit der rechten Maustaste auf "VBAProject" klickst, und wähle Einfügen > Modul.
  4. Füge den folgenden VBA-Code ein:
Dim lngLast As Long

With ActiveWorkbook.Worksheets("Daten")
    lngLast = Application.Max(2, .Cells(.Rows.Count, 1).End(xlUp).Row)
    With .AutoFilter.Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("B2:B" & CStr(lngLast)), SortOn:=xlSortOnValues, Order:=xlAscending, _
            CustomOrder:="Januar,Februar,März,April,Mai,Juni,Juli,August,September,Oktober,November,Dezember", DataOption:=xlSortNormal
        .SortFields.Add Key:=Range("F2:F" & CStr(lngLast)), SortOn:=xlSortOnValues, Order:=xlAscending, _
            CustomOrder:="Übertrag,Einnahme,Ausgabe,Rückstellungen", DataOption:=xlSortNormal
        .SortFields.Add Key:=Range("G2:G" & CStr(lngLast)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End With
  1. Schließe den VBA-Editor und führe das Makro aus.

Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler 1004: Anwendung oder Objekt definiert"

    • Lösung: Überprüfe, ob der Blattname "Daten" korrekt ist und ob die angegebene Zellbereiche existieren.
  • Fehler: Sortierung funktioniert nicht

    • Lösung: Stelle sicher, dass die Autofilter-Funktion aktiviert ist. Du kannst dies mit ActiveWorkbook.Worksheets("Daten").AutoFilterMode = True überprüfen.

Alternative Methoden

Wenn Du kein Makro verwenden möchtest, kannst Du die Sortierung auch manuell durchführen:

  1. Markiere die Daten in Deinem Arbeitsblatt.
  2. Gehe zu Daten und wähle Sortieren.
  3. Wähle die Sortierkriterien aus und klicke auf OK.

Für komplexere Sortierungen kann die Verwendung von Excel-Tabellen hilfreich sein, da diese automatisch die Sortierfunktionen integrieren.


Praktische Beispiele

Hier sind einige Beispiele, wie Du die SortFields anpassen kannst:

  1. Sortieren nach mehreren Kriterien:

    • Du kannst mehrere SortFields hinzufügen, um nach verschiedenen Spalten zu sortieren, wie im obigen Makro gezeigt.
  2. Custom Orders:

    • Wenn Du benutzerdefinierte Sortierungen benötigst (z.B. Monate oder Kategorien), verwende CustomOrder.
.SortFields.Add Key:=Range("F2:F" & CStr(lngLast)), SortOn:=xlSortOnValues, Order:=xlAscending, _
    CustomOrder:="Übertrag,Einnahme,Ausgabe,Rückstellungen", DataOption:=xlSortNormal

Tipps für Profis

  • Nutze SortFields.Clear, um vorherige Sortierungen zu entfernen, bevor Du neue hinzufügst.
  • Verwende xlDescending, wenn Du eine absteigende Sortierung benötigst.
  • Achte darauf, dass der Autofilter vor der Anwendung der Sortierung aktiviert ist, um Fehler zu vermeiden.

FAQ: Häufige Fragen

1. Frage: Wie passe ich die Sortierreihenfolge an? Du kannst die Sortierreihenfolge ändern, indem Du den Parameter Order auf xlDescending für absteigende Sortierung setzt.

2. Frage: Kann ich die Sortierung auf eine andere Tabelle anwenden? Ja, ändere einfach den Blattnamen in der Zeile With ActiveWorkbook.Worksheets("Daten") auf den Namen der gewünschten Tabelle.

3. Frage: Was ist der Unterschied zwischen xlSortOnValues und xlSortOnCellColor? xlSortOnValues sortiert basierend auf den Zellenwerten, während xlSortOnCellColor nach der Hintergrundfarbe der Zellen sortiert.

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