Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1544to1548
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Teilergebnis Zählenwenn

Teilergebnis Zählenwenn
06.03.2017 17:16:05
Gregor
Hallo
Das wurde im Forum bestimmt schon beschrieben, ich wurde jedoch nicht fündig.
Wie kann ich den Code
Anzahl = WorksheetFunction.CountIf(Range("C2:C2810"), 861)
bei gefilterten Tabellen anwenden (861 nur in sichtbaren Zeilen zählen)
Vielen Dank und Gruss
Gregor

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

Betreff
Datum
Anwender
Anzeige
AW: Teilergebnis Zählenwenn
06.03.2017 17:24:35
Daniel
Hi
am einfachsten, indem du in einer Hilfsspalte der Tabelle von Zeile 2 bis 2810 die Formel einfügst:
=Teilergebnis(3;C2)
das Ergebnis ist in jeder Zeile 1 wenn die Zeile sichtbar ist und 0, wenn ausgeblendet.
zum Zählen nimmst du dann CountIfs und bindest die Hilfsspalte (z.B. Spalte H) als zweite Bedingung mit ein:
Anzahl = Worksheetfunction.Countifs(Range("C2:C2810"), 861, Range("H2:H2810"), 1)
wenn du die Hilfsspalte nicht magst, währe hier wahrscheinlich eine Schleife die einfachste VBA-Variante:
Anzahl = 0
for each Zelle in Range("C1:C2810").SpecialCells(xlcelltypevisible)
Anzahl = Anzahl - (Zelle.Value = 861)
Next

(das Minus, weil in VBA ein WAHR in Berechnungen nicht wie 1, sondern wie -1 gewertet wird)
Gruß Daniel
Anzeige
AW: Teilergebnis Zählenwenn
06.03.2017 18:25:28
Luschi
Hallo Gregor,
benutze WorksheetFunction.Subtotal(103, ...
oder     WorksheetFunction.Subtotal(102, ...
103 bei Textwerten und 102 bei Zahlen.
Gruß von Luschi
aus klein-Paris
AW: Teilergebnis Zählenwenn
07.03.2017 07:46:36
Gregor
Hallo
Vielen Dank.
Formeln in einer Hilfsspalte möchte ich umgehen, weil die Tabelle am Schluss viele Zeilen umfasst und langsam würde.
Ist die Variante von Luschi auch mit einer Wenn-Bedingung möglich, zB. wenn in Spalte C = 681. Ich habe das wie folgt versucht, erhalte aber eine Fehlermeldung:
Anzahl = WorksheetFunction.Subtotal(102, Range(Cells(2, "C"), Cells(LastRow, "C")), 681)
Wie ist eine solcher Code korrekt? Kann ich das mit einer Funktion lösen?
Danke und Gruss
Gregor
Anzeige
AW: Teilergebnis Zählenwenn
07.03.2017 08:44:57
Luschi
Hallo Gregor,
WorksheetFunction.Subtotal wertet den gesetzten Filter in einer Arbeitstabelle aus, kann aber keine Nebenbedingungen für Filter setzen/anwenden.
Du mußt also die Daten der Spalte nach dem Wert '681' filtern.
Gruß von Luschi
aus klein-Paris
AW: Teilergebnis Zählenwenn
07.03.2017 08:51:17
Gregor
Hallo Luschi
Danke für die Klarstellung.
Dann benutze ich den Code von Daniel (bei vielen Zeilen evt. etwas langsam), weil ich andere Filterkriterien setze und dann berechnen will, wie viele 681 (681 ist eine Variable in einer Schlaufe) beim gesetzten Filter vorkommen.
Danke und Gruss
Gregor
AW: Teilergebnis Zählenwenn
08.03.2017 16:43:20
Daniel
Es ist ein weit verbeiteter Irrtum, dass zusätzliche Hilfsspalten eine Datei aufblähen und langsam machen würden.
häufig ist aber das Gegenteil der Fall, nämlich das vernünftig gesetzte Formeln in Hilfsspalten die notwendigen Berechnungen vereinfachen und damit insgesamt alles beschleunigen.
wenn du sowieso mit VBA arbeitest, dann ist es ja auch kein Problem so eine Hilfsspalte am Anfang hinzuzufügen und bei Makroende wieder zu entfernen, wenn sie nicht mehr benötigt wird.
Mache ich übrigens sehr oft, weil sich machne Berechnungen in Tabellen per Formel leichter ausführen lassen als per explizierter VBA-Programmierung
Gruß Daniel
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige