Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Sortieren nach Spalten in dynamischer Tabelle

Sortieren nach Spalten in dynamischer Tabelle
25.04.2018 07:45:46
Gerhard
Bitte um VBA Hilfe!
In meiner dynamischen Tabelle sollte diese nach jeweils jeder Spalte neu sortiert
werden können!
siehe Testmappe im Anhang!
Vielen Dank für Eure Hilfe
Gruß Gerhard
https://www.herber.de/bbs/user/121255.xls
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sortieren nach Spalten in dynamischer Tabelle
25.04.2018 08:12:43
Martin
Hallo Gerhard,
ich habe dir eine dynamische Sortierung eingerichtet:
https://www.herber.de/bbs/user/121256.xls
Entscheidend ist der jeweilige Name der Sortiergrafik. Es wird die Zahl nach dem ersten Leerzeichen des Grafiknamens ausgelesen und als Spaltennummer interpretiert. So kannst du beliebig viele weitere Spalten ohne Veränderung des Makros ergänzen und sortieren.
Viele Grüße
Martin
Anzeige
Neue optimierte Version
25.04.2018 08:39:44
Martin
Hallo Gerhard,
unter der Dusche ist mir eine bessere Idee gekommen. Jetzt reicht es aus die Sortiergrafik einfach in eine andere Spalte zu kopieren, denn du weitere Spalten einfügst. Die Namen der Sortiergrafiken spielen jetzt keine Rolle mehr, da die Spalte in der Grafik automatisch ermittelt wird:
https://www.herber.de/bbs/user/121259.xls
Zudem ist der VBA-Code jetzt noch kürzer ;-)
Viele Grüße
Martin
Anzeige
AW: Neue optimierte Version
25.04.2018 12:48:58
Gerhard
Hallo Martin,
Dein Makro ist ja super!
Es hat ja nur ein paar Zeilen!
Wie fragst Du die dynamische Größe der Tabelle ab?
Vielen Dank
Gruß Gerhard
AW: Neue optimierte Version
25.04.2018 13:32:22
Daniel
Gar nicht.
es wird einfach das ganze Tabellenblatt sortiert (Cells.Sort), damit erübrigt sich die Abfrage der Größe.
für eine dynamische Größe könnte man einfach auf die Excelautomatik zurückgreifen und nur die erste Zelle angeben: Cells(1, 1).Sort...
Excel würde dann den Zellbereich erweitern, bis dieser von einer durchgehenden Leerzeile und Leerspalte umschlossen ist.
Das gleiche würde Cells(1, 1).CurrentRegion.Sort machen
wenn noch Leerzeilen ode Leerspalten vorhanden sind, (was aber nicht sein sollte) könnte man noch
AcitveSheet.UsedRange.Sort ... verwenden.
Gruß Daniel
Anzeige
AW: Neue optimierte Version
26.04.2018 06:09:48
Martin
Hallo Gerhard,
es kommt zwar etwas spät, aber eine Kleinigkeit ist mir noch aufgefallen: Die Spalte mit den Datumsformaten werden nicht korrekt sortiert, weil die Zellen nicht immer als Datum formatiert sind. Man kann aber mit "DataOption1:=xlSortTextAsNumbers" erzwingen, dass Texte als Zahlen behandelt werden. Der Code sieht dann so aus:
Sub Sorierung()
Dim iCol As Integer
iCol = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Column
Cells.Sort Key1:=Cells(1, iCol), Order1:=xlAscending, Header:=xlYes, OrderCustom:=1,  _
Orientation:=xlTopToBottom, DataOption1:=xlSortTextAsNumbers
End Sub
Viele Grüße
Martin
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Sortieren von Spalten in einer dynamischen Tabelle in Excel


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Modul einfügen: Klicke mit der rechten Maustaste auf "VBAProject (deine Arbeitsmappe)" und wähle Einfügen > Modul.

  3. VBA-Code einfügen: Kopiere den folgenden Code in das Modul:

    Sub Sorierung()
       Dim iCol As Integer
       iCol = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Column
       Cells.Sort Key1:=Cells(1, iCol), Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, _
       Orientation:=xlTopToBottom, DataOption1:=xlSortTextAsNumbers
    End Sub
  4. Sortiergrafik erstellen: Füge eine Schaltfläche (Formularsteuerung) in deine Tabelle ein, um die Sortierung zu aktivieren.

  5. Makro zuweisen: Klicke mit der rechten Maustaste auf die Schaltfläche, wähle Makro zuweisen und wähle das Sorierung-Makro aus.

  6. Tabelle testen: Klicke auf die Schaltfläche, um die Tabelle nach der entsprechenden Spalte zu sortieren.


Häufige Fehler und Lösungen

  • Fehler: Tabelle sortiert nicht korrekt
    Lösung: Stelle sicher, dass die Zellen in der Spalte die richtige Formatierung haben. Wenn Datumswerte nicht korrekt sortiert werden, verwende DataOption1:=xlSortTextAsNumbers im VBA-Code.

  • Fehler: Makro nicht ausführbar
    Lösung: Überprüfe die Makrosicherheitseinstellungen unter Datei > Optionen > Trust Center > Einstellungen für das Trust Center.


Alternative Methoden

  • Intelligente Tabelle automatisch sortieren: Verwende die Funktion "Sortieren" direkt in der Tabelle ohne VBA. Klicke auf den Dropdown-Pfeil in der Spaltenüberschrift der intelligenten Tabelle, um die Daten schnell zu sortieren.

  • Excel nach Zeilen sortieren: Um eine Zeile zu sortieren, wähle die gesamte Zeile aus und gehe zu Daten > Sortieren. Wähle die gewünschte Sortierreihenfolge aus.

  • Excel VBA Tabelle sortieren mehrere Spalten: Du kannst mehrere Spalten im VBA-Code zum Sortieren angeben. Ergänze Key2:=Cells(1, <Spaltennummer>) für zusätzliche Sortierkriterien.


Praktische Beispiele

  1. Einfaches Sortieren nach einer Spalte:

    • Erstelle eine intelligente Tabelle und füge eine Schaltfläche hinzu, um die Tabelle nach einer bestimmten Spalte zu sortieren.
  2. Dynamisches Sortieren:

    • Nutze den oben genannten VBA-Code, um die Sortierung dynamisch anzupassen, wenn weitere Spalten hinzugefügt werden.

Tipps für Profis

  • Datenformatierung: Achte darauf, dass alle Zellen in einer Spalte das gleiche Datenformat haben, um unerwartete Sortierergebnisse zu vermeiden.

  • Verwendung von Named Ranges: Nutze benannte Bereiche, um deine Daten dynamisch zu referenzieren, so dass dein VBA-Code flexibler wird.

  • Einsatz von Filter: Kombiniere das Sortieren mit Filtern, um gezielte Datenanalysen durchzuführen und die Übersichtlichkeit zu erhöhen.


FAQ: Häufige Fragen

1. Wie kann ich die Sortierung in einer intelligenten Tabelle automatisieren?
Du kannst die intelligente Tabelle so einstellen, dass sie automatisch sortiert wird, indem du VBA-Skripte verwendest, die beim Hinzufügen neuer Daten ausgeführt werden.

2. Gibt es eine Möglichkeit, mehrere Spalten gleichzeitig zu sortieren?
Ja, im VBA-Code kannst du mehrere Key-Parameter angeben, um die Tabelle nach mehreren Spalten zu sortieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige