Zellen zählen, aber ohne die ausgeblendeten

Hallo

Es würd mich interessieren wie man Zellen zählen kann und die ausgeblendeten zwischen den aktiven Zeilen nicht mit zählt.

Dann würde ich gerne noch die Summe von den aktiven Zellen errechnen.
Die letzte Zeile mit Inhalt müsste Excel selber ausfindig machen.

Gruss & Danke

Hallo,

wenn Zeilen mit Autofilter ausgeblendet wurden:

=TEILERGEBNIS(109;Bereich)

LG
Chris

Hi Chris

Möchte mich nicht auf einen Bereich festlegen.

Suche eine VBA Funktion.

Danke

Hallo Lanzma,

ich gehe jetzt mal davon aus, dass deine Zahlen alle in Spalte A stehen, und dass keine leeren Zellen dazwischen sind.
Die ausgeblendeten Zellen habe eine Höhe von null.
Dann könnte das mit dem folgenden Code gehen:

Option Explicit

Sub zählen()
 Dim z As Long, letzte As Long, anzahl As Long
 Dim summe As Double

 anzahl = 0
 summe = 0
 z = 1
 letzte = Cells(z, 1).End(xlDown).Row
 For z = 1 To letzte
 If Rows(z).Height \> 0 Then
 anzahl = anzahl + 1
 summe = summe + Cells(z, 1)
 End If
 Next z
 MsgBox "Anzahl der eingeblendeten Zellen: " & anzahl & Chr(10) & \_
 "Summe in den eingeblendeten Zellen: " & summe
End Sub

Gruß, Andreas

Nun gut, du kannst dir einen Bereich definieren über Einfügen-Namen-Definieren.

Ich nenn das Ding jetzt einfach mal „BEREICH“, welcher sich auf:
=INDIREKT(A1)
bezieht, wobei in A1 dann der konkrete Bereich steht.
Schreibst du in A1 jetzt B1:B100, sucht er im Bereich B1:B100.

Nun kannst du dich in der Teilergebnisformel auf „Bereich“ beziehen, also =Teilergebnis(109;Bereich).

Dies ist der Weg ohne VBA, den ich immer bevorzuge, da VBA langsam ist.

Aber okay, über VBA gehst du folgendermaßen vor:

Suche dir zunächst ein Ereignis, in das du den Code einfügst bzw. nimm ne Schaltfläche dafür.

Die Zelle, in der das Ergebnis steht, sei A1. Suchbereich (Konstante) ist B1:B100.

const suchbereich = "B1:B100"

' schreibt die Formel rein, liefert Ergebnis
Range("A1").FormulaLocal = "=Teilergebnis(109,"&suchbereich&")"

' wandelt die Formel in feste Zahl um
Range("A1").Copy 
Range("A1").Pastespecial xlPastevalues

LG
Chris

Grüezi Lanzma

Möchte mich nicht auf einen Bereich festlegen.

Das musst Du aber eh, denn ohne einen Bereich kann Excel keine Summierung durchführen. Wenn dein Bereich unterschiedlich lang ist, dann nimm halt die ganze Spalte:

=TEILERGEBNIS(109;A:A)

Suche eine VBA Funktion.

Warum?
Obige Funktion passt sich automatisch immer an die vorhandenen Daten an.

Du kannst (ab xl2007) deine Daten auch als Tabellen-Feature führen, dann kannst Du eine Ergebniszeile einfügen und dort festlegen wie die Daten einer Spalte zusammengefasst werden sollen - beim Filtern passt sich der berechnete Bereich dann ebenfalls automatisch an.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Es würd mich interessieren wie man Zellen zählen kann und die
ausgeblendeten zwischen den aktiven Zeilen nicht mit zählt.

Dann würde ich gerne noch die Summe von den aktiven Zellen
errechnen.
Die letzte Zeile mit Inhalt müsste Excel selber ausfindig
machen.

Hallo Lanzma,

klick mal unten mit Rechts auf die Zeile wo links „Bereit“ steht.
Dann wähle aus, Summe oder Anzahl, oder Zählen.
Nun markiere Zellen, oder eine ganze Spalte und schaue rechts vom „Bereit“ hin…

Hinweis: Anzahl ist die Anzahl an Zellen mit Zahlwerten, Texte werden nicht gezählt.

Gruß
Reinhard

Hallo Thomas

Du kannst (ab xl2007) deine Daten auch als Tabellen-Feature
führen, dann kannst Du eine Ergebniszeile einfügen und dort
festlegen wie die Daten einer Spalte zusammengefasst werden
sollen - beim Filtern passt sich der berechnete Bereich dann
ebenfalls automatisch an.

Wusste ich nicht… muss das mal checken.

Danke

Hi Chris

Danke für die Unterstützung. Mal schauen wie ich das jetzt mache, nach den vielen Lösungsansätzen.

Gruss

klick mal unten mit Rechts auf die Zeile wo links „Bereit“
steht.

das ist wiedermal was Neues :smile:

Danke

So was habe ich gesucht… nur die Summe funktioniert nicht !

summe = summe + Cells(z, 1)

Das müsste ich wohl noch in eine Schleife bauen.

Gruss & Danke

Hallo Lanzma,

das verstehe ich nicht. Das Aufsummieren ist doch in der Schleife. Bei mir ging es. Was genau funktioniert denn nicht. Gibt’s eine Fehlermeldung, ist die Summe am Ende falsch oder Null oder …?
Eventuell gibt’s Probleme, wenn bei deinen Zellen welche mit Text statt mit Zahlen dabei sind.

Gruß, Andreas

…nur die Summe funktioniert nicht !

summe = summe + Cells(z, 1)

Das müsste ich wohl noch in eine Schleife bauen.

Gruss & Danke

das verstehe ich nicht. Das Aufsummieren ist doch in der
Schleife. Bei mir ging es. Was genau funktioniert denn nicht.
Gibt’s eine Fehlermeldung, ist die Summe am Ende falsch oder
Null oder …?

Hallo Andreas,

ggfs. sind Leerzellen in der Spalte, dann bekommt „letzte“ den falschen Wert.

Anderer Ansatz:

Option Explicit
'
Sub zählen()
Dim z As Long, letzte As Long, anzahl As Long
Dim summe As Double
letzte = **Cells(Rows.Count, 1).End(xlUp).Row**
For z = 1 To letzte
 If Rows(z).Height \> 0 Then
 anzahl = anzahl + 1
 summe = summe + Cells(z, 1)
 End If
Next z
MsgBox "Anzahl der eingeblendeten Zellen: " & anzahl & Chr(10) & \_
 "Summe in den eingeblendeten Zellen: " & summe
End Sub

Gruß
Reinhard

Hallo Reinhard,

völlig korrekt. Dein Ansatz ist besser!

Gruß, Andreas

Hi ihr Beiden

Genau das wars.

Vielen Dank