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

Forumthread: Schleife um sichtbare(gefilterte) Zeilen zu zählen

Schleife um sichtbare(gefilterte) Zeilen zu zählen
19.07.2015 14:31:43
Berner
Hallo,
könnte mir mal jemand helfen? ich müsste eine Schleife programmieren um ausgehend von einer Zelle nach oben hin sichtbare Zeilen (die nicht leer sind!) zählen zu können.
Mein Ansatz funktioniert leider nicht:
For i = 1 To Ende
If Cells.SpecialCells(xlCellTypeVisible)(i, 6) "" Then
x = x + 1
End If
Next
MsgBox (x)
End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
Schleife um sichtbare(gefilterte) Zeilen zu zählen
19.07.2015 15:07:03
Nepumuk
Hallo,
warum nicht einfach per TEILERGEBNIS - Funktion?
Gruß
Nepumuk

AW: Schleife um sichtbare(gefilterte) ...
19.07.2015 15:16:10
Herbert
Nepumuk meint so: =TEILERGEBNIS(3;Bereich)
Servus

Nee, meint er bestimmt nicht, ...
19.07.2015 15:39:43
Luc:-?
…Herbert,
wenn schon so, dann 103 statt 3. Evtl Leerzellen wdn dann aber auch nicht mitgezählt. Ob das aber auch sein soll, weiß ja keiner außer dem Fragesteller. Aber da gäbe es auch Möglichkeiten…
Gruß+schöWE, Luc :-?

Anzeige
AW: Leerzellen sollen ja auch nicht mit gezählt...
19.07.2015 15:49:14
Daniel
...werden, Luc!
steht zumindest so im Eingangsposting.
Gruß Daniel

Die geklammerte Bemerkung war mir entfallen!
19.07.2015 17:14:23
Luc:-?
Dann geht's mit TEILERGEBNIS wie von Nepumuk vorgeschlagen, von Herbert „bebeispielt“ und mir berichtigt.
Luc :-?

AW: Schleife um sichtbare(gefilterte) Zeilen zu zählen
19.07.2015 15:47:28
Daniel
Hi
hier mal ein paar Varianten:
For i = 1 To Ende
If Cells(i, 6)  "" And not Rows(i).Hidden then x = x + 1
Next
MsgBox x

for each Zelle in Range("F1:F" & Ende).SpecialCells(xlcelltypevisible)
if Zelle.Value  "" then x = x + 1
next
MsgBox x

wenn in Spalte F feste Werte stehen (dh keine Formeln):
x = Range("F1:F" & Ende).SpecialCells(xlcelltypevisible).SpecialCells(xlcelltypeconstants, 3). _
count
Msgbox x
um die Idee von Nepumukt nochmal aufzugreifen:
x = worksheetfunction.SubTotal(3, Range("F1:F" & Ende)
Msgbox x
wobei bei den beiden letztgenannten Varianten die Zellen wirklich leer sein müssen.
eine Zelle, die eine Formel enthält, ist nicht leer, auch wenn das Formelergebnis der Leerstring "" ist.
gruß Daniel
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Sichtbare (gefilterte) Zeilen in Excel zählen


Schritt-für-Schritt-Anleitung

Um die Anzahl der sichtbaren (gefilterten) Zeilen in Excel zu ermitteln, kannst Du entweder VBA verwenden oder die TEILERGEBNIS-Funktion nutzen. Hier zeige ich Dir beide Methoden.

Methode 1: Mit VBA

  1. Öffne den Visual Basic for Applications (VBA) Editor durch Drücken von ALT + F11.

  2. Füge ein neues Modul hinzu.

  3. Kopiere den folgenden Code in das Modul:

    Sub ZähleGefilterteZeilen()
       Dim x As Long
       Dim Ende As Long
       Ende = Cells(Rows.Count, 6).End(xlUp).Row ' Bestimme die letzte Zeile in Spalte F
       For i = 1 To Ende
           If Cells(i, 6).Value <> "" And Not Rows(i).Hidden Then
               x = x + 1
           End If
       Next i
       MsgBox x
    End Sub
  4. Schließe den VBA-Editor und führe das Makro aus.

Methode 2: Mit TEILERGEBNIS

  1. Wähle eine Zelle aus, in der das Ergebnis angezeigt werden soll.
  2. Gib die folgende Formel ein:

    =TEILERGEBNIS(103; F:F) 

    Diese Formel zählt die Anzahl der nicht-leeren Zellen in der gefilterten Liste.


Häufige Fehler und Lösungen

  • Fehler: Die Zählung stimmt nicht überein.

    • Lösung: Stelle sicher, dass die Zellen tatsächlich leer sind und keine Formeln enthalten, die ein leeres Ergebnis zurückgeben. Verwende =TEILERGEBNIS(103; F:F) für eine präzisere Zählung.
  • Fehler: VBA gibt eine Fehlermeldung zurück.

    • Lösung: Überprüfe, ob Du die richtige Spalte und den richtigen Bereich in Deinem Code spezifiziert hast. Achte darauf, dass die Spalte existiert und Daten enthält.

Alternative Methoden

Eine weitere Möglichkeit, die Anzahl der gefilterten Zeilen zu zählen, besteht darin, die AGGREGAT-Funktion zu verwenden. Diese Funktion kann auch mit gefilterten Daten umgehen:

=AGGREGAT(3; 5; F:F)

Hierbei zählt 3 die nicht-leeren Zellen und 5 ignoriert die versteckten Zeilen.


Praktische Beispiele

  1. Zählen aller sichtbaren Zellen in Bereich F1:F100:

    x = Range("F1:F100").SpecialCells(xlCellTypeVisible).Count
    MsgBox x
  2. Zählen gefilterter Zeilen mit Werten:

    x = WorksheetFunction.Subtotal(103, Range("F1:F100"))
    MsgBox x

Tipps für Profis

  • Nutze SpecialCells in VBA, um gezielt nur gefilterte Zellen zu zählen.
  • Experimentiere mit der AGGREGAT-Funktion, um unterschiedliche Zählmethoden zu testen.
  • Achte darauf, dass Du nur mit echten Zellen arbeitest, um die Genauigkeit der Zählung zu gewährleisten.

FAQ: Häufige Fragen

1. Wie kann ich die Anzahl der gefilterten Zeilen in einer bestimmten Spalte zählen? Du kannst die TEILERGEBNIS-Funktion verwenden, um gezielt die Zellen in einer bestimmten Spalte zu zählen, z.B. =TEILERGEBNIS(103; A:A).

2. Was ist der Unterschied zwischen TEILERGEBNIS und AGGREGAT? TEILERGEBNIS ist einfacher zu verwenden, während AGGREGAT mehr Flexibilität bietet, z.B. das Ignorieren von Fehlern und versteckten Zeilen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige