Tabelle sortieren

Intelligente Tabelle automatisch sortieren nach Eingabe

Excel bietet mit intelligenten Tabellen eine Vielzahl von leistungsstarken Funktionen, die das Arbeiten mit Daten effizienter gestalten.

Heute möchte ich dir zeigen, wie du deine intelligente Tabelle automatisch bei der Eingabe neuer Daten sortieren kannst.

Um VBA zu lernen und besser zu verstehen, empfehle ich dir mein kostenloses Grundlagentraining, in dem ich dir die ersten Schritt in Excel-VBA zeige.

Tabelle sortieren

Schritt 1: Tabelle vorbereiten

Die erste Aufgabe besteht darin, die Tabelle in eine intelligente Tabelle umzuwandeln. Dazu einfach  irgendwo in die Tabelle klicken und mit Strg + T eine intelligente Tabelle daraus erstellen.

Schritt 2: Tabelle per VBA Code sortieren

Die intelligente Tabelle kannst du mit der .Sort Funktion sortieren. Im Argument Key1 hinterlegst du die Spalte, nach der die Tabelle sortiert werden soll. Das optionale Argument Order1 definiert die Sortierung für Aufsteigend oder Absteigend und Header gibt der Funktion die Information, ob die Tabelle Überschriften hat.

				
					Sub Sortieren()
    
    Range("tblProdukte").Sort Key1:=Range("tblProdukte[Bestand]"), Order1:=xlAscending, Header:=xlYes

End Sub

				
			

Schritt 3: Sortierung automatisch ausführen

Die Sortierung kannst du automatisch ausführen, sobald ein neuer Datensatz angelegt oder ein Wert in der zu sortierenden Spalte geändert wird. Dazu musst du mit dem Worksheet_Change Event arbeiten.

Des Weiteren soll nach dem Sortieren die neu angelegte Zelle bzw. die veränderte Zelle aktiviert sein, sodass der Benutzer im selben Datensatz verbleibt.

Um die Tabelle nach mehreren Spalten zu sortieren, kannst du zusätzliche Keys einfügen. In diesem Beispiel sortiere ich die Tabelle zuerst nach dem Bestand und nachfolgend nach der Produkt ID. So wird bei gleichem Bestand, die niedrigere Produkt ID nach oben sortiert.  

				
					Private Sub Worksheet_Change(ByVal Target As Range)

'Prüfen, ob eine Zelle verändert wurde
If Target.Count > 1 Then Exit Sub

'Prüfen, ob Bestand verändert wurde
If Not Intersect(Target, Range("tblProdukte[Bestand]")) Is Nothing Then

    'Variable dimensionieren
    Dim Bestand As String
    
    'Bestand merken
    Bestand = Target.Value

    'Sortieren
    Range("tblProdukte").Sort Key1:=Range("tblProdukte[Bestand]"), Order1:=xlAscending, Header:=xlYes, _
    Key2:=Range("tblProdukte[Produkt-ID]")
    
    'Bestand suchen
    Range("E:E").Find(What:=Bestand).Activate

End If

End Sub

				
			

Ich hoffe dieses Tutorial hilft dir dabei, deine Anwendungen professionell und benutzerfreundlich zu gestalten.

Wenn du jetzt mehr zum Thema intelligente Tabellen erfahren möchtest, dann schaue dir gerne meinen Blogbeitrag dazu an.

Melde dich gerne für meinen Newsletter an und erhalte regelmäßig Tipps & Tricks rund um das Thema Excel VBA!

Teile diesen Beitrag

Empfehlungen für dich

VBATrainer Excel VBA Coaching - Lagerverwaltung

Sichere dir jetzt meine kostenlose Lagerverwaltungs-Anwendung