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

Forumthread: Autofilter und Letzte Zeile

Autofilter und Letzte Zeile
29.06.2006 18:45:09
Kersten
Hallo,
ich möchte den letzten Datensatz ermitteln. Hierzu benutze ich
LetzteZeile = Cells(Rows.Count, 1).End(xlUp).Row
Wenn allerdings ein Autofilter aktiviert wurde, bekomme ich nicht mehr die letzte Zeile im Tabellenblatt, sondern die letzte Zeile die man sieht.
Mit ActiveSheet.UsedRange.Rows.Count komme ich nicht wirklich weiter, da hier nur die benutzen Zeilen gezählt werden. Dafür wird der Autofilter ignoriert.
Gibt es eine Möglichkeit, die echte letzte Zeile zu ermitteln ohne den Autofilter aufzuheben?
Grüße
Kersten
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Autofilter und Letzte Zeile
29.06.2006 19:45:57
K.Rola
Hallo,
geht davon aus, dass Überschriften vorhanden sind:

Sub letzte_gefiltert()
Dim lngRow As Long, lngLast As Long
lngLast = [a1].End(xlDown).Row
For lngRow = 2 To lngLast
If Not Rows(lngRow).Hidden Then Exit For
Next
MsgBox "Letzte Zeile: " & lngLast & Space(10), 64, "Gebe bekannt..."
End Sub

Gruß K.Rola
Anzeige
AW: Autofilter und Letzte Zeile
30.06.2006 09:15:39
Kersten
Hallo,
geht noch nicht, da
lngLast = [a1].End(xlDown).Row
ebenfalls nur die letzte sichtbare Zeile des Bereiches bringt, nicht aber die letzte tatsächliche Zeile des Bereiches.
Grüße Kersten
AW: Autofilter und Letzte Zeile
30.06.2006 15:42:21
K.Rola
Hallo,
lad mal eine Mappe hoch, bei der das nicht funktioniert.
Gruß K.Rola
Anzeige
AW: Autofilter und Letzte Zeile
03.07.2006 19:56:38
K.Rola
Hallo,
hab dich wohl missverstanden. Du willst immer die letzte Zelle, einerlei, ob gefiltert oder nicht, richtig so?
Falls ja, warum sollte da UsedRange nicht weiterhelfen?
"Mit ActiveSheet.UsedRange.Rows.Count komme ich nicht wirklich weiter, da hier nur die benutzen Zeilen gezählt werden..."
Ja, welche denn sonst?
Gruß K.Rola
Anzeige
AW: Autofilter und Letzte Zeile
04.07.2006 08:33:59
Kersten
Hallo,
ich brauche den letzten Eintrag in Spalte "A". UsedRange.Rows.Count geht auf das ganze Sheet. Wenn in Spalte "B" z.B. mehr drin steht, bekomme ich eine falsche Zahl.
Außerdem beginnt UsedRange.Rows.Count nicht bei Zeile 1 (was auch richtigt ist), sondern bei der ersten belegten Zeile. Wenn nun z. B. die erste Zeile leer ist, dann bekomme ich wiederum ein falsches Ergebnis.
Es ist auch möglich, am Ende des Sheets eigene Informationen anzubringen. Die sollen natürlich ignoriert werden. [A4].End(xlDown).Row bringt genau das richtige Ergebnis (bis auf das Problem mit den augeblendeten Zeilen). Kann man .End(xlDown) nicht irgendwie dazu bewegen, ausgeblendete Zeilen mit zu berücksichtigen? UsedRange tut es ja auch.
Grüße Kersten
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

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:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke im Menü auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  3. 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
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. 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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige