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

Forumthread: Automatisches Sortieren sich ändernder Tabelle

Automatisches Sortieren sich ändernder Tabelle
17.08.2005 15:24:04
dirtyharry
hallo profis,
Ich habe eine Tabelle, in der ich immer wieder neue Datensätze in Form von Zeilen einfüge.
Ich möchte, dass sich diese Tabelle, sobald ich das Arbeitsblatt verlasse, automatisch sortiert. Dabei soll eine Spalte der Tabelle (nämlich C) untersucht werden, ob Datensätze vorhanden sind, und dann die betreffenden Zeilen der Tabelle anhand einer anderen Spalte (A) ordnen.
Ich hab ja schon diverses versucht, aber ich scheitere bei der Formel immer am Range. Allerdings habe ich versucht, die Formel auf einem dynamischen Bereich aufzubauen. Nur leider bin ich mir bei der Formel für einen solchen Bereich nicht mal sicher. Kann mir jemand von euch da weiterhelfen?
Bitte um Rückmeldung.
Danke, Harald
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Automatisches Sortieren sich ändernder Tabelle
17.08.2005 17:40:45
ChrisBee
Hallo dirtyharry.
Das kriegen wir schon hin. ;o) Aber um einen solchen Code zu basteln brauch ich noch ein
paar Details.
1. Wie groß ist der Bereich der sortiert werden soll? A1:C65335 ?
2. Hat Deine Tabelle eine Zeile mit Überschriften?
3. Was meinst Du mit "betreffende Zeilen"? Soll die ganze Spalte sortiert werden oder
nur Teile davon? Kann es sein das Spalte C manchmal ganz leer ist? (?)
Sonnige Grüße
Chris
Anzeige
AW: Automatisches Sortieren sich ändernder Tabelle
18.08.2005 10:50:40
dirtyharry
hallo,
ich bin gestern abend noch draufgekommen, wie ich das ganze lösen kann.
den dynamischen Bereich habe ich folgendermaßen definiert:
=BEREICH.VERSCHIEBEN(Tabelle1!$A$7:$O$7;0;0;ANZAHL2(Tabelle1!$A:$A))
und die automatische Sortierung wie folgt:
Option Explicit

Private Sub Worksheet_Deactivate()
Bereichauswählen
End Sub


Private Sub Bereichauswählen()
ActiveSheet.Unprotect
Sheets("Mängelliste").Range("Datenbank").Sort Key1:=Range("A7"), _
Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

Allerdings tritt dabei noch folgendes Problem auf. Wenn ich die Formel wie oben verwende (mit Blattschutz deaktivieren bzw. reaktivieren) funktioniert es leider nicht. Ohne die Verwendung des Blattschutzes funzt es aber. Woran kann das liegen?
Danke für eure Hilfe,
Harald
Anzeige
AW: Automatisches Sortieren sich ändernder Tabelle
18.08.2005 12:11:54
ChrisBee
Hallo dirtyharry.
Ich bin zwar auch kein VBA-Vollprofi, aber ich mach Sortierungen immer mit "Selection.sort".
Und das Schutz-Problem kenn ich auch.
Also... Zuerst nicht "Range("Datenbank"), sondern den genauen Zellbezug. (Range(A1:C345))
Dann .select dahinter anstelle von .sort und nächste Zeile "Selection.sort ...."
Und das Schutzproblem umgehst Du wenn Du den Schutz an anderer Stelle einbaust.
Etwa schon ganz am Anfang mit:

Private Sub Worbook_Open()
Dim wks As Worksheet
For Each wks In ThisWorkbook.Worksheets
wks.Protect ("Password"), UserInterfaceOnly:=True, DrawingObjects:=True, _
Contents:=True, Scenarios:=True
wks.EnableSelection = xlUnlockedCells
Next wks
End Sub

Der Zusatz "UserInterfaceOnly:=True" sorgt dafür das niemand Änderungen machen kann,
mit Außnahme vom Code selbst.
Alle Änderungen die durch den VBA-Code generiert werden laufen so problemlos weiter, selbst
wenn das Arbeitsblatt mit Password geschützt ist und Du sparst Dir das andauernde schützen und Blattschutz wieder aufheben im Code.
Eine Ausnahme:
Änderungen am Kommentar funktionieren damit nicht habe ich festgestellt.
Sonnige Grüße
ChrisBee
Anzeige
AW: Automatisches Sortieren sich ändernder Tabelle
19.08.2005 11:06:51
dirtyharry
hi,
sorry für die verspäteter Rückmeldung. Ich habe mein Problem jetzt auf ähnliche Weise gelöst. Habe die Tabellenblätter einzeln gesperrt, da ich eines ganz offen lassen muss.
trotzdem danke für deine hilfe!!!
Harald
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Automatisches Sortieren einer sich ändernden Tabelle in Excel


Schritt-für-Schritt-Anleitung

Um eine Excel-Tabelle automatisch zu sortieren, wenn sich Daten ändern, kannst du die folgenden Schritte ausführen:

  1. Definiere den dynamischen Bereich: Verwende die Funktion BEREICH.VERSCHIEBEN, um einen dynamischen Bereich für deine Tabelle zu erstellen. Zum Beispiel:

    =BEREICH.VERSCHIEBEN(Tabelle1!$A$7:$O$7;0;0;ANZAHL2(Tabelle1!$A:$A))
  2. VBA-Code hinzufügen: Drücke ALT + F11, um den VBA-Editor zu öffnen. Füge den folgenden Code in das entsprechende Arbeitsblatt ein:

    Private Sub Worksheet_Deactivate()
       Bereichauswählen
    End Sub
    
    Private Sub Bereichauswählen()
       ActiveSheet.Unprotect
       Sheets("Mängelliste").Range("Datenbank").Sort Key1:=Range("A7"), _
       Order1:=xlAscending, Header:=xlGuess, _
       OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
       ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    End Sub
  3. Blattschutz anpassen: Stelle sicher, dass der Blattschutz korrekt angewendet wird. Du kannst den Schutz gleich zu Beginn der Arbeitsmappe aktivieren, um Probleme zu vermeiden. Füge dazu diesen Code in den Workbook_Open-Bereich ein:

    Private Sub Workbook_Open()
       Dim wks As Worksheet
       For Each wks In ThisWorkbook.Worksheets
           wks.Protect ("Password"), UserInterfaceOnly:=True, DrawingObjects:=True, _
           Contents:=True, Scenarios:=True
           wks.EnableSelection = xlUnlockedCells
       Next wks
    End Sub

Häufige Fehler und Lösungen

  • Fehler: Blattschutz verhindert Sortierung
    Lösung: Stelle sicher, dass der Blattschutz vor der Sortierung aufgehoben wird und danach wieder aktiviert wird.

  • Fehler: Bereich wird nicht korrekt erkannt
    Lösung: Überprüfe deinen definierten Bereich. Achte darauf, dass die Formel für den dynamischen Bereich korrekt ist.


Alternative Methoden

  • Sortierung ohne Makro: Du kannst auch die SORTIEREN-Funktion in Excel verwenden, um eine Tabelle automatisch sortieren zu lassen, jedoch ist dies nicht so effektiv wie der Einsatz von VBA, wenn du eine automatische Aktualisierung bei Änderungen benötigst.

  • Intelligente Tabellen: Verwende intelligente Tabellen (Excel-Tabellen), um die automatische Sortierung zu erleichtern. Du kannst die Funktion "Sortieren" direkt in der Tabelle verwenden.


Praktische Beispiele

  • Fußball-Tabelle: Wenn du eine Excel-Fußball-Tabelle hast, kannst du die oben beschriebenen Schritte verwenden, um die Platzierungen automatisch zu sortieren, sobald ein neues Spielergebnis eingegeben wird.

  • Rangliste: Wenn du eine Rangliste führst, kannst du die SORTIEREN-Funktion oder VBA nutzen, um die Rangfolge der Spieler automatisch zu aktualisieren.


Tipps für Profis

  • Verwende Selection.Sort: Anstelle von Range.Sort kannst du Selection.Sort verwenden, um die Sortierung effizienter zu gestalten.

  • Hinweis zu UserInterfaceOnly: Das Setzen von UserInterfaceOnly:=True in deinem VBA-Code ermöglicht dir, dass VBA-Änderungen auch bei aktivem Blattschutz durchgeführt werden können.


FAQ: Häufige Fragen

1. Wie kann ich eine Excel-Tabelle automatisch sortieren ohne Makro?
Du kannst intelligente Tabellen verwenden, um die Sortierung manuell zu aktivieren. Eine vollständige Automatisierung erfordert jedoch VBA.

2. Funktioniert die automatische Sortierung für mehrere Spalten?
Ja, du kannst die Sortierung so anpassen, dass mehrere Spalten gleichzeitig berücksichtigt werden. Achte darauf, den Bereich und die Sortierparameter entsprechend anzupassen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige