Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Autofilter Zeilennummer ermitteln

Forumthread: Autofilter Zeilennummer ermitteln

Autofilter Zeilennummer ermitteln
Ptonka
Hallo zusammen,
wie kann ich über VB aus einer mit dem AutoFilter gefilterten Liste die dann angezeigten Zeilennummern ermitteln? Also z.B. wenn ich eine Liste mit 2000 Einträgen habe und ich filtere nach einem bestimmten Kriterium und dann die Zeilen 123, 456, 1234 und 1877 angezeigt werden, möchte ich mittels VB mit einer Schleife diese 4 Zeilennummern ermitteln.
Für einen Tipp wäre ich sehr dankbar.
Gruß,
Ptonka
Anzeige
AW: Autofilter Zeilennummer ermitteln
07.04.2011 21:11:26
Gerd
Hallo Ptonka!
Sub AFZ() Dim rngCell As Range With ActiveSheet.AutoFilter.Range For Each rngCell In .Offset(1).Resize(.Count - 1).Columns(1).SpecialCells(xlVisible) Debug.Print rngCell.row Next End With End Sub Gruß Gerd
Nachgefragt
07.04.2011 21:24:12
Matthias
Hallo Gerd
Hab auch grad gefummelt, Du warst aber schneller.
Reicht das nicht schon so aus ?
For Each rngCell In .Columns(1).SpecialCells(xlVisible)
Gruß Matthias
Anzeige
AW: Nachgefragt
07.04.2011 21:31:39
Gerd
Hallo Matthias,
ja, wenn die Headline bei der Ausgabe dabei sein soll, kann Offset u. Resize entfallen.
Gruß Gerd
ok, Danke kwT
07.04.2011 21:33:30
Matthias
irgendwas stimmt da nicht ...
07.04.2011 21:58:17
Matthias
Hallo nochmal
Das lässt mir doch noch keine Ruhe
Userbild
Filtere ich Spalte A un B zeigt der Debugger bis 20
Gruß Matthias
Anzeige
egal ...
07.04.2011 22:20:46
Matthias
Hallo
habs jetzt so für mich archiviert:
Dim rngCell As Range
For Each rngCell In ActiveSheet.AutoFilter.Range.Columns(1).SpecialCells(xlVisible)
Debug.Print rngCell.Row
Next
Gruß Matthias
AW: irgendwas stimmt da nicht ...
07.04.2011 22:25:54
Reinhard
hallo Matthias, Gerd,

Sub AFZ()
Dim rngCell As Range
With ActiveSheet.AutoFilter.Range
For Each rngCell In .Offset(1).Resize(.Count - 1).Columns(1).SpecialCells(xlVisible)
Debug.Print rngCell.Row
Next rngCell
End With
End Sub
Obigen Code habe ich laufen lassen nachdem ich in DSpalte D nach "a" gefiltert hatte.
Ihr seht in B20 den untersten Eintrag, ich hab sogar die zeilen von 21 bis 65535 markiert und im Kontextmenue Zeilen löschen gewählt. M.E. müßte unterhalb von zeile 20 alles leer sein.
Ich habe dann eine ähnlich seltsame Debug-Anzeige, es werden Zeilen bis hin zu 27 angezeigt?
Deshalb Frage noch offen.
Bis 20 hätte ich ja vielleicht noch verstanden, aber bis 27 *rätsel*
Hier das Bild:
Userbild
Gruß
Reinhard
Anzeige
3 Spalten gefiltert mit je 9 Zeilen = 27 kwT
07.04.2011 22:33:34
Matthias
Alles klar, wieder gepennt :-( Gruß o.w.T.
07.04.2011 22:42:52
Reinhard


oder eher so ...
07.04.2011 22:45:51
Matthias
Hallo Reinhard
Das hier ist da schon realistischer
ohne Kopfdaten
B2:B20 = 19 Zellen
C keine
D2:D9 = 8 Zellen
macht: 27
Gruß Matthias
Anzeige
AW: Oder wie "immer" :-)...
07.04.2011 23:26:11
Gerd
Hallo,
ja, ja, die ...-Areas!
Sub AFZ_2()
Dim rngRow As Range
For Each rngRow In ActiveSheet.AutoFilter.Range.Rows(2).Resize(ActiveSheet.AutoFilter.Range. _
Rows.Count - 1).EntireRow
If Not rngRow.Hidden Then Debug.Print rngRow.row
Next
End Sub
Gruß Gerd
Anzeige
Ja, so passt es :-) & hier meine Überlegungen ...
08.04.2011 07:47:07
Matthias
Hallo
... Das hat mir nämlich echt keine Ruhe gelassen :o)
Zumindest hab ich jetzt "evtl." eine näherliegende Logik entdeckt.
Obwohl ich das Ganze noch nicht zu 100% verstehe.
Tabelle1 [Beispiel von Reinhard]

 ABCDEFGHIJKL
1 dhname        
21  a        
32  b        
43  f        
54  a        
65  d        
76  a        
87  f        
98  a     9  
109           
1110           
1211           
1312           
1413           
1514           
1615           
1716           
1817           
1918           
2019v     20    
2120   x       
2221   x       
2322   x       
2423   x       
2524   x       
2625   x       
2726   x       
2827   x 28   2885

Formeln der Tabelle
ZelleFormel
J9=ZEILE()
H20=ZEILE()
G28=ZEILE()
K28=ZEILE()
L28=SUMME(G1:K28)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Hatte es dann alternativ so probiert:
Dim rngCell As Range
For Each rngCell In ActiveSheet.AutoFilter.Range.Columns(1).SpecialCells(xlVisible)
If rngCell.Row > 1 Then Debug.Print rngCell.Row 'ohne Kopfzeile (sonst ohne If/Then)
Next
mit gleichem Ergebnis :o)
Gruß Matthias
Anzeige
AW: Ja, so passt es :-) & hier meine Überlegungen ...
08.04.2011 10:42:31
Ptonka
Hallo an alle, die geantwortet haben,
letztendlich hat mir der Vierzeiler von Matthias weitergeholfen.
Vielen Dank dafür, Matthias.
Gruß,
Ptonka
;
Anzeige
Anzeige

Infobox / Tutorial

Autofilter Zeilennummer ermitteln in Excel


Schritt-für-Schritt-Anleitung

Um die Zeilennummern einer gefilterten Liste in Excel zu ermitteln, kannst Du VBA verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

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

  2. Klicke auf Einfügen und dann auf Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code in das Modul ein:

    Sub AFZ()
        Dim rngCell As Range
        With ActiveSheet.AutoFilter.Range
            For Each rngCell In .Offset(1).Resize(.Count - 1).Columns(1).SpecialCells(xlVisible)
                Debug.Print rngCell.Row
            Next
        End With
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Filtere deine Daten wie gewünscht.

  6. Führe das Makro AFZ aus, um die Zeilennummern der sichtbaren Zellen im Direktfenster zu sehen.


Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler 1004: Keine sichtbaren Zellen"

    • Lösung: Stelle sicher, dass der Autofilter aktiv ist und mindestens eine sichtbare Zelle vorhanden ist, bevor Du das Makro ausführst.
  • Fehler: Falsche Zeilennummern werden angezeigt.

    • Lösung: Überprüfe, ob die Daten korrekt gefiltert sind und dass Du den richtigen Bereich im autofilter range verwendest.

Alternative Methoden

Wenn Du keine VBA-Programmierung verwenden möchtest, kannst Du auch die folgende Formel nutzen, um die Zeilennummern zu ermitteln:

  1. Verwende die Funktion ZEILE(): Angenommen, Du hast gefilterte Daten in Spalte A, könntest Du in Zelle B1 die folgende Formel verwenden:

    =WENN(A1<>"";ZEILE(); "")
  2. Ziehe die Formel nach unten, um die Zeilennummern aller sichtbaren Zellen zu erhalten.


Praktische Beispiele

Angenommen, Du hast eine Liste von 2000 Einträgen in Spalte A und verwendest den Autofilter, um nur die Zeilen mit einem bestimmten Kriterium anzuzeigen. Mit dem VBA-Skript oben kannst Du die Zeilennummern für alle sichtbaren Einträge ganz einfach ermitteln.

Hier ein Beispiel für die Ausgabe:

  • Wenn Du nach „d“ in Spalte D filterst, könnten die Zeilennummern 2, 5, 9 und 20 angezeigt werden.

Tipps für Profis

  • Nutze die xlVisible-Konstante, um die Sichtbarkeit der Zellen zu überprüfen. Das spart Zeit und macht den Code effizienter.
  • Experimentiere mit verschiedenen Bereichen im autofilter range, um spezifischere Daten zu erhalten.
  • Füge weitere Logik in dein Makro ein, um die Daten zu verarbeiten oder zu speichern, anstatt sie nur im Debug-Fenster anzuzeigen.

FAQ: Häufige Fragen

1. Wie kann ich das Makro schneller ausführen? Um das Makro schneller auszuführen, reduziere die Anzahl der Zellen im autofilter range, indem Du nur die benötigten Daten filterst.

2. Funktioniert dieser Code in Excel 365? Ja, der VBA-Code ist mit Excel 365 und anderen Versionen kompatibel, solange die Autofilter-Funktion unterstützt wird.

3. Kann ich die Zeilennummern in eine andere Zelle schreiben? Ja, Du kannst den Code anpassen, um die Zeilennummern in ein bestimmtes Arbeitsblatt oder in bestimmte Zellen zu schreiben, anstatt sie nur im Debug-Fenster anzuzeigen.

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