Schleife um sichtbare(gefilterte) Zeilen zu zählen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Schleife um sichtbare(gefilterte) Zeilen zu zählen
von: Berner
Geschrieben am: 19.07.2015 14:31:43

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

Bild

Betrifft: Schleife um sichtbare(gefilterte) Zeilen zu zählen
von: Nepumuk
Geschrieben am: 19.07.2015 15:07:03
Hallo,
warum nicht einfach per TEILERGEBNIS - Funktion?
Gruß
Nepumuk

Bild

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

Bild

Betrifft: Nee, meint er bestimmt nicht, ...
von: Luc:-?
Geschrieben am: 19.07.2015 15:39:43
…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 :-?

Bild

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

Bild

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

Bild

Betrifft: AW: Schleife um sichtbare(gefilterte) Zeilen zu zählen
von: Daniel
Geschrieben am: 19.07.2015 15:47:28
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

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Schleife um sichtbare(gefilterte) Zeilen zu zählen"