Autofilter und die letzte Zeile in Excel ermitteln
Schritt-für-Schritt-Anleitung
Um die letzte Zeile in Excel zu ermitteln, ohne den Autofilter aufzuheben, kannst du ein VBA-Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:
-
Öffne Excel und drücke ALT + F11
, um den VBA-Editor zu öffnen.
-
Klicke im Menü auf Einfügen
und wähle Modul
, um ein neues Modul zu erstellen.
-
Kopiere folgenden Code in das Modul:
Sub letzte_gefiltert()
Dim lngRow As Long, lngLast As Long
lngLast = Cells(Rows.Count, 1).End(xlUp).Row
For lngRow = lngLast To 1 Step -1
If Not Rows(lngRow).Hidden Then
MsgBox "Letzte Zeile: " & lngRow, 64, "Gebe bekannt..."
Exit Sub
End If
Next lngRow
End Sub
-
Schließe den VBA-Editor und kehre zu Excel zurück.
-
Drücke ALT + F8
, wähle letzte_gefiltert
und klicke auf Ausführen
.
Dieses Makro gibt dir die letzte sichtbare Zeile zurück, auch wenn ein Autofilter aktiviert ist.
Häufige Fehler und Lösungen
Fehler 1: Das Makro gibt die falsche letzte Zeile zurück.
Lösung: Stelle sicher, dass du den richtigen Bereich in der lngLast
Zuweisung angibst. Verwende Cells(Rows.Count, 1).End(xlUp).Row
, um die letzte Zeile in Spalte "A" zu ermitteln.
Fehler 2: Das Makro funktioniert nicht, wenn alle Zeilen im Autofilter verborgen sind.
Lösung: Überprüfe, ob du das Makro so angepasst hast, dass es von der letzten Zeile nach oben iteriert. Dies stellt sicher, dass die letzte sichtbare Zeile gefunden wird, auch wenn andere Zeilen im Filter verborgen sind.
Alternative Methoden
Eine alternative Methode besteht darin, den Autofilter temporär zu deaktivieren. Du kannst das mit folgendem VBA-Code tun:
Sub letzte_ohne_filter()
Dim lngLast As Long
ActiveSheet.AutoFilterMode = False
lngLast = Cells(Rows.Count, 1).End(xlUp).Row
MsgBox "Letzte Zeile: " & lngLast
ActiveSheet.AutoFilterMode = True
End Sub
Dieser Ansatz hat den Nachteil, dass der Autofilter vorübergehend deaktiviert wird, was möglicherweise nicht gewünscht ist.
Praktische Beispiele
Angenommen, du hast eine Datenliste in Spalte "A" und einen Autofilter aktiv. Wenn du das oben genannte Makro letzte_gefiltert
ausführst, erhältst du die letzte sichtbare Zeile, z.B. wenn die Daten von A1 bis A10 reichen und einige Zeilen gefiltert sind.
Das Ergebnis wird in einer MessageBox angezeigt, die dir die letzte sichtbare Zeile anzeigt, was besonders hilfreich ist, wenn du mit umfangreichen Daten arbeitest.
Tipps für Profis
- Überprüfe, ob du die richtige Spalte für die letzte Zeile angibst. Das Beispiel verwendet Spalte "A", aber du kannst es anpassen, um jede andere Spalte zu überprüfen.
- Betrachte die Verwendung von
WorksheetFunction.CountA
, um die Anzahl der nicht leeren Zellen zu ermitteln, wenn du mit leeren Zeilen in deinem Datenbereich arbeitest.
- Nutze die Möglichkeit, zusätzliche Filterbedingungen in dein Makro einzufügen, um die Suche nach der letzten Zeile weiter zu verfeinern.
FAQ: Häufige Fragen
1. Wie kann ich die letzte Zeile in einer anderen Spalte ermitteln?
Du musst lediglich die Spaltenreferenz in der Cells
-Funktion ändern, z.B. Cells(Rows.Count, 2).End(xlUp).Row
für Spalte "B".
2. Funktioniert das Makro auch in Excel 365?
Ja, das Makro funktioniert in allen gängigen Excel-Versionen, einschließlich Excel 365.
3. Was soll ich tun, wenn das Makro nicht funktioniert?
Stelle sicher, dass der Autofilter aktiv ist und überprüfe die Makrosicherheitseinstellungen in Excel, um sicherzustellen, dass Makros aktiviert sind.