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

Forumthread: Automatische Sortierung durch Makro

Automatische Sortierung durch Makro
10.07.2022 15:58:58
Joachim
Hallo zusammen,
ich versuche meine Frage erstmal so allgemein und gleichzeitig so unkompliziert wie möglich zu halten:
Ich habe eine Excel-Tabelle mit 15 Spalten, die ich mithilfe eines Makros auswerten und neu strukturieren möchte. Mit dem folgenden Passus soll die gesamte Tabelle über den jeweiligen Eintrag in der zehnten Spalte sortiert werden:
ActiveSheet.Range("$A$1:$O$1").AutoFilter Field:=10, Criteria1:= _
"=*gut*", Operator:=xlAnd, Criteria2:="*boese*"
Für meine Frage hier habe ich den Zellinhalt, nach dem sortiert werden soll, mal vereinfacht: Wenn die Zelle irgendwo das Wort "gut" enthält und gleichzeitig nicht das Wort "böse" enthält, dann wird sie angezeigt. Alles andere wird ausgeblendet. Das alles funktioniert an und für sich auch tadellos, aber wenn die ursprüngliche Tabelle mehr als 1864 Zeilen besitzt, dann wird alles darunter nicht mehr sortiert und weiterhin angezeigt (also nach dem Sortieren nicht ausgeblendet). Hattet ihr sowas schon mal? Woran kann das liegen?
Viele Grüße
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Automatische Sortierung durch Makro
10.07.2022 16:14:57
Oberschlumpf
Hi Joachim,
laut deiner gesamten Beschreibung möchtest du eine mit Makro automatisierte Sortierung erreichen.
Aber mit dem einzigen Code, den du zeigst, wird gefiltert - nicht sortiert.
Bitte was genau möchtest du?
Zeig mal bitte eine Bsp-Datei mit Bsp-Daten, so dass dein Problem nachvollziehbar ist.
Ciao
Thorsten
Anzeige
AW: Automatische Sortierung durch Makro
10.07.2022 16:34:38
Joachim
Du hast natürlich recht, es geht hier um das Filtern der Daten.
Eine Beispiel-Datei kann ich nicht schicken, da es mir nicht gelungen ist, den Fehler zu replizieren. Das Original kann ich nicht schicken. Die Frage war auch eher allgemein: Ist euch sowas schon passiert?
AW: Automatische Sortierung durch Makro
10.07.2022 16:46:51
Oberschlumpf
Hi Joachim,
ich hab gerade mal...
- den Makrorecorder gestartet
- dann in einer fast 500 Zeilen langen Tabelle nach einem bestimmten Inhalt in Spalte A gefiltert
- Makrorecorder gestoppt
Der daraus resultierende Code sieht schon bei Range anders aus als bei dir
mein Code

ActiveSheet.Range("$A$1:$A$468").AutoFilter Field:=1
dein Code

ActiveSheet.Range("$A$1:$O$1").AutoFilter Field:=10
siehst du den Fehler in deinem Code?
Anstelle von $O$1 solltest du z Bsp $O$2000 verwenden - am besten wäre natürlich, anstelle von 2000 trägst du die wirklich letzte, genutzte Zeile ein.
Hilfts?
Ciao
Thorsten
Anzeige
AW: Automatische Sortierung durch Makro
10.07.2022 16:55:05
onur
Was auch bedenklich ist, ist dass du einmal "boese" und das nächste mal "böse" schreibst - ist das auch in den Zeilen mit den Daten so?
AW: Automatische Sortierung durch Makro
10.07.2022 18:02:06
Joachim
Das habe ich jetzt eigentlich nur als Beispiel verwendet. In der tatsächlichen Tabelle gibt es solche Stolpersteine nicht.
AW: Automatische Sortierung durch Makro
10.07.2022 17:25:32
Daniel
Hi
Du markierst nur die erste Zeile und über lässt es dann der Excelautomatik, das Tabellenende zu finden.
Das kann funktionieren, das kann aber auch Tücken haben.
Ein Problem könnte eine Leerzeile zwischen drin sein, dann verwendet Excel die Daten nur bis zu dieser Leerzeile.
Oder du hast den Autofilter mal mit der kleineren Tabelle erstellt un dann weitere Zeilen hinzugefügt.
Wenn du den Autofilter nicht entfernt hast, hat Excel sich die alte Tabellengröße gemerkt und arbeitet mit dieser weiter, anstatt die neuen Zeilen mit hinzuzunehmen.
Ich verwende daher selten die Excelautomatik sondern Ermittler selbst die Größrme des Zellbereichs.
In deinem Fall beispielsweise so:

Range("A1:O" & Cells(Rows.Count, 10).end(xlup).row).Autofilter
Dh man springt in einer Spalte, die auf jeden Fall Daten enthält von der untersten Zeilevnach oben, der Sprung geht bis zur ersten Zelle mit Inhalt, und verwendet diese Zeilennummer als untere Grenze.
Gruß Daniel
Anzeige
AW: Automatische Sortierung durch Makro
10.07.2022 18:16:44
snb

with ActiveSheet.Usedrange.resize(,15)
.AutoFilter 10, "*gut*"
.AutoFilter 10,: "*boese*"
end with

;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Automatische Sortierung in Excel mit Makro


Schritt-für-Schritt-Anleitung

Um in Excel automatisch zu sortieren, kannst du ein Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und lade die Tabelle, die du sortieren möchtest.

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

  3. Erstelle ein neues Modul:

    • Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei)“.
    • Wähle „Einfügen“ > „Modul“.
  4. Füge den folgenden Code ein:

    Sub AutomatischeSortierung()
       Dim letzterRow As Long
       letzterRow = Cells(Rows.Count, 10).End(xlUp).Row
       ActiveSheet.Range("A1:O" & letzterRow).AutoFilter Field:=10, Criteria1:="=*gut*", Operator:=xlAnd, Criteria2:="<>*boese*"
    End Sub
  5. Schließe den VBA-Editor und kehre zu Excel zurück.

  6. Starte das Makro über ALT + F8 und wähle „AutomatischeSortierung“ aus.

Mit diesem Makro wird die Tabelle nach der zehnten Spalte gefiltert, sodass nur die Zeilen angezeigt werden, die das Wort „gut“ enthalten und „böse“ nicht enthalten.


Häufige Fehler und Lösungen

  • Problem: Die Sortierung funktioniert nicht für mehr als 1864 Zeilen.

    • Lösung: Stelle sicher, dass du den genauen Bereich der Daten angibst. Nutze die Methode Cells(Rows.Count, 10).End(xlUp).Row, um die letzte Zeile dynamisch zu ermitteln.
  • Problem: Unklarheit zwischen „boese“ und „böse“.

    • Lösung: Achte darauf, dass die Schreibweise in den Daten konsistent ist.
  • Problem: Filter bleibt bei neuen Zeilen bestehen.

    • Lösung: Entferne den Autofilter und wende ihn erneut an, nachdem du neue Daten hinzugefügt hast.

Alternative Methoden

Wenn du Excel automatisch sortieren möchtest, aber kein Makro verwenden willst, kannst du auch die Tabelle-Funktion nutzen:

  1. Markiere deine Daten und klicke auf „Einfügen“ > „Tabelle“.
  2. Aktiviere die Option „Tabelle hat Überschriften“.
  3. Klicke auf die Dropdown-Pfeile in den Spaltenüberschriften, um die Daten manuell zu filtern und zu sortieren.

Diese Methode ermöglicht eine automatische Sortierung der Daten beim Hinzufügen neuer Einträge.


Praktische Beispiele

Hier sind einige praktische Beispiele für die Anwendung der automatischen Sortierung in Excel:

  • Automatische Sortierung von Befestigungsteilen: Wenn du eine Liste von Befestigungsteilen hast und diese nach einer bestimmten Eigenschaft (z. B. Material) sortieren möchtest, kannst du das oben genannte Makro anpassen.

  • Sortierung nach Eingabe: Wenn du in einer Tabelle die Daten nach Eingabe sortieren möchtest, könntest du das Makro so erweitern, dass es die Tabelle nach Änderungen automatisch aktualisiert.


Tipps für Profis

  • Verwende Worksheet_Change-Ereignis: Du kannst dein Makro so anpassen, dass es automatisch ausgeführt wird, wenn Änderungen in der Tabelle vorgenommen werden. So bleibt die Sortierung immer aktuell.

  • Dynamische Bereiche: Anstatt feste Zellbereiche zu verwenden, solltest du dynamische Bereiche definieren, um sicherzustellen, dass alle Daten erfasst werden, egal wie viele Zeilen du hinzufügst.

  • Testen und Debugging: Nutze den Debugger im VBA-Editor, um sicherzustellen, dass dein Makro wie erwartet funktioniert und keine Fehler enthält.


FAQ: Häufige Fragen

1. Kann ich die Sortierung auch ohne Makro durchführen?
Ja, du kannst die integrierten Filter- und Sortierfunktionen von Excel verwenden, um manuell zu sortieren.

2. Was ist der Unterschied zwischen Filtern und Sortieren?
Filtern zeigt nur die Daten an, die bestimmten Kriterien entsprechen, während Sortieren die Reihenfolge der Daten ändert.

3. Was ist der Vorteil der automatischen Sortierung mit Makro?
Ein Makro spart Zeit und automatisiert den Prozess, wodurch menschliche Fehler minimiert werden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige