Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1864to1868
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
VBA CountIfs mit 3 Bedingungen
26.01.2022 20:41:28
Thomas
Hallo,
ich habe eine Countifs Bedingung mit 2 Bedingungen, diese funktioniert auch ohne Probleme, sieht so aus:

WorksheetFunction.CountIfs(Range("P1:Z30000"), x + 1, Range("Q1:AA30000"), "False")
jetzt würde ich die gerne um eine dritte ergänzen, dabei bekomme ich aber dann immer einen Laufzeitfehler.
In Spalte C stehen Jahreszahlen (2020,2021,2022 usw.) und in meinem Userform gibt es eine Combobox worüber ich die Jahreszahl auswähle, diese Auswahl würde ich gerne als Argument nehmen um dann in der Spalte C die Bedingung mit abzufragen

WorksheetFunction.CountIfs(Range("P1:Z30000"), x + 1, Range("Q1:AA30000"), "False", Range("C1:Q30000"), frmHauptFenster.cmbJahr.Value)
Wie kann ich das machen?
Danke

27
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA CountIfs mit 3 Bedingungen
26.01.2022 20:50:53
Rudi
Hallo,
versuch mal
WorksheetFunction.CountIfs(Range("P1:Z30000"), x + 1, Range("Q1:AA30000"), "False", Range("C1:Q30000"), CInt(frmHauptFenster.cmbJahr.Value))
Gruß
Rudi
AW: VBA CountIfs mit 3 Bedingungen
27.01.2022 05:39:28
Thomas
Hallo Rudi,
dann gibt es einen Laufzeitfehler 13 "Typen unverträglich"
AW: VBA CountIfs mit 3 Bedingungen
27.01.2022 09:55:15
Rudi
dann gibt es wohl einen Fehlerwert oder Text in einer der Zellen.
btw: Zählenwenns() wertet immer nur die erste Spalte der genannten Bereiche aus. Hier also P, Q, C
Gruß
Rudi
AW: VBA CountIfs mit 3 Bedingungen
26.01.2022 20:51:40
onur
EINE Zeile deines Codes reicht nicht. Wir wissen noch nicht mal, WO der Code steht, geschweige denn, wie der Rest des Codes oder die Datei aussieht.
Anzeige
AW: VBA CountIfs mit 3 Bedingungen
27.01.2022 06:16:10
Thomas
Hi,
ich habe mal eine Beispielmappe nachgebaut und füge die hier mal an.
Wenn ich in der Countifs die Bedingung

, Range("C1:Q30000"), CInt(UserForm1.cmbJahr.Value)
weglasse, dann wird die Listbox korrekt gefüllt, ansonsten kommt ein Fehler.
Beim erstellen ist mir aufgefallen das ich das Modul/die Prozedur im initial Aufrufe, denn Wert der Combobox aber erst später definier, wie könnte ich die Combobox so einstellen das Sie im initial immer das aktuelle Jahr einstellt? Vielleicht würde das das Problem schon erklären!?
Danke
https://www.herber.de/bbs/user/150705.xlsm
Anzeige
AW: VBA CountIfs mit 3 Bedingungen
27.01.2022 18:23:13
onur
Dein Problem ist Folgendes: Die Sub "UerbersichtOffene" wird mit UF-Initialze ausgeführt, die UF ist zu dieser Zeit somit noch nicht offen, geschweige denn irgend eine Auswahl bei der ComboBox getroffen.
Selbst wenn die Sub hinter UF.Show käme, hätte die Combobox kein Value, da, wenn die Sub aufgerufen wird, UF wieder zu wäre, oder, du hättest (bei "UF.Show vbModeless") keine Chance, das Jahr auszuwählen, weil die Sub vorher schon gelaufen wäre.
Also solltest du die Sub nur mit dem Click-Event der Combobox aufrufen.
AW: VBA CountIfs mit 3 Bedingungen
27.01.2022 18:39:23
onur
Wen du den Fehler "Typen unverträglich" behoben hast, wirst du auf diesen Fehler stossen: "Die CountIfs-Eigenschaft des WorksheetFunction-Objektes kann nicht.....", da du die "Gebrauchsanleitung" des Zählenwenns-Befehls nicht gelesen hast :).
Anzeige
AW: VBA CountIfs mit 3 Bedingungen
27.01.2022 20:56:19
Thomas
Hallo Onur,
ich mach doch in der countifs bei der dritten Prüfung (die tatsächlich den von dir beschriebenen Fehler hervorruft) nichts anders wie bei den zwei anderen Bedingungen, also was über sehe ich?
AW: VBA CountIfs mit 3 Bedingungen
27.01.2022 20:57:45
Thomas
Hallo Onur,
ich mach doch in der countifs bei der dritten Prüfung (die tatsächlich den von dir beschriebenen Fehler hervorruft) nichts anders wie bei den zwei anderen Bedingungen, also was über sehe ich?
AW: VBA CountIfs mit 3 Bedingungen
27.01.2022 20:59:44
onur
DAS steht in der "Gebrauchsanleitung" bei MS:
"Wichtig: Jeder zusätzliche Bereich muss dieselbe Anzahl von Zeilen und Spalten wie das Argument Kriterienbereich1 haben. Die Bereiche müssen nicht direkt nebeneinander liegen."
Anzeige
AW: VBA CountIfs mit 3 Bedingungen
27.01.2022 21:32:45
Thomas
Ok, das ist mir durchgegangen das die Spalten und Zeilen Anzahl immer gleich sein muss...
Damit kommt jetzt zwar kein Fehler mehr, aber die Werte sind Falsch, es sollte ja gezählt werden wie oft ein Wert (x+1) False ist po Jahr, also für 2022 müsste das Ergebnis 12 sein, für 2023 6
Bekomme aber als Ergebnis 2 bei 2022 und 1 bei 2023, hab da wohl noch einen grundsatz fehler drin.
https://www.herber.de/bbs/user/150728.xlsm
AW: VBA CountIfs mit 3 Bedingungen
27.01.2022 21:46:48
onur
SO funktioniert Zählenwenns aber nicht.
Du kriegst die SCHNITTMENGE aus,18 , 18 und 2, weil ALLE DREI Bedingungen zutreffen müssen, die Dritte trift aber nur ZWEIMAL zu.
Anzeige
AW: VBA CountIfs mit 3 Bedingungen
27.01.2022 23:02:16
onur
SO klappt es:

Public Sub UerbersichtOffene()
Dim arAbsprachen(1, 52) As Integer
Dim x As Integer
Dim Jahr
Worksheets("Tabelle1").Activate
x = 1
MsgBox UserForm1.cmbJahr.Value
Jahr = CInt(UserForm1.cmbJahr.Value)
For x = 0 To 52
arAbsprachen(0, x) = x + 1
arAbsprachen(1, x) = Evaluate("SUMPRODUCT((P2:Z10=1)*(Q2:AA10=FALSE)*(C2:C10=" & Jahr & "))")
Next x
With UserForm1.libUebersichtOffen
.ColumnCount = 2
.ColumnWidths = "1,0cm;1,0cm"
.ColumnHeads = False
.Column = arAbsprachen
.TextAlign = fmTextAlignCenter
End With
End Sub

AW: VBA CountIfs mit 3 Bedingungen
28.01.2022 05:25:58
Thomas
Morgen Onur,
vielen Dank für die Erklärungen, das Countiiffs hab ich aber irgendwie immer noch nicht verstanden, das ist doch eigentlich eine logische UND Verknüpfung aus mehreren Bedingungen, wieso das nur die Schnittmenge zurückgibt versteh ich noch nicht ganz.....
Mit deinem Code klappt es auch leider noch nicht ganz, da du in der ersten Bedingung

SUMPRODUCT((P2:Z10=1)
auf 1 prüfst, das muss aber x+1 sein, so das das in jedem durchlauf um eins erhöht wird
Wenn ich versuche die 1 gegen die Variable x +1 zu tauschen bekomme ich einen Typen Unverträglich fehler...

arAbsprachen(1, x) = Evaluate("SUMPRODUCT((P2:Z10=" & x + 1 & "))*(Q2:AA10=FALSE)*(C2:C10=" & Jahr & "))")

Anzeige
AW: VBA CountIfs mit 3 Bedingungen
28.01.2022 06:22:00
onur
= Evaluate("SUMPRODUCT((P2:Z10=" & x + 1 & ")*(Q2:AA10=FALSE)*(C2:C10=" & Jahr & "))")
Eine Klammer zu viel !
AW: VBA CountIfs mit 3 Bedingungen
28.01.2022 15:24:03
Thomas
Hallo,
danke das war es, damit funktioniert es grundsätzlich, allerdings ergibt sich ein neue Problem, da die 10 Zeile ja nur Testen waren, ich geh davon aus das ich aber insgesamt in absehbarer Zeit aber mindestens 10.000 Zeilen in dem Tabellenblatt habe, wenn ich die Funktion entsprechend ab änder, dann dauert das füllen der Listboxen (obwohl nur 4 Zeilen gefüllt sind) schon auffällig lange und ich befürchte das es wenn dann mal 1000 oder 2000 Zeilen gefüllt sind es extrem lange dauern könnte.
Kann man in der Formel auch z.b. mit Lastrow arbeiten?
Oder aber ein ganz anderer Ansatz das man das Tabellenblatt (Inteligente Tabelle) über die Jahres Variable Filtert, so das nur noch das gesuchte Jahr angezeigt wird und dann die Berechnung vornimmt?!
Würde das überhaupt etwas an der Performance ändern?
Danke für die Unterstützung
Anzeige
AW: VBA CountIfs mit 3 Bedingungen
28.01.2022 15:30:27
onur
Ich habe keine Ahnung, wozu du die Schleife (die Listbox) überhaupt brauchst.
Wie auch immer, eigentlich brauchst du, meiner Meinung nach, kein VBA, schlimmstenfalls 56 Formeln.
AW: VBA CountIfs mit 3 Bedingungen
28.01.2022 20:15:48
Thomas
In der Listbox gibt es zwei Spalten, die eine zeigt 52 reihen an 1-52 (KW's) und danben in der Spalte stehen die Werte die über die Fromel ermittelt wird, das gleiche dann für die zweite Listbox für 12 Monate.
Wie würdest du das lösen? Was meinst du mit 56 Formeln?
AW: VBA CountIfs mit 3 Bedingungen
29.01.2022 13:29:14
Thomas
Hi,
aber wie soll das zweite Tabellenblatt entstehen? Die Tabelle ist vom Aufbau ja wie in Tabelle1 zu sehen.
Meine idee von dem Autofilter fürs Jahr funktioniert ja auch nicht so einfach, da ja auch die ausgefilterten Daten mitgezählt werden.
So richtig fehlt mir die idee, wie das schneller ablaufen könnte ......
Anzeige
AW: VBA CountIfs mit 3 Bedingungen
29.01.2022 13:32:16
onur
"aber wie soll das zweite Tabellenblatt entstehen?" ?
Das ist nur ein Beispiel - WO du die Formeln hinbaust, ist doch dir überlassen.
HAST DU DENN DIE GELBEN FELDER ÜBERHAUPT VERÄNDERT ?
AW: VBA CountIfs mit 3 Bedingungen
29.01.2022 19:02:57
Thomas
Hallo, ich hab es jetzt über das Tabellenblatt wie von dir beschrieben umgesetzt, das funktioniert auch, allerdings ist es auch nicht schneller wie über das array.
Wenn noch einer eine idee ist es schneller zu bekommen, wäre es super.
https://www.herber.de/bbs/user/150756.xlsm
Danke
AW: VBA CountIfs mit 3 Bedingungen
29.01.2022 19:36:54
onur
Ich weiss echt nicht, WAS du meinst - das Ganze dauert weniger als eine Sekunde.
Anzeige
AW: VBA CountIfs mit 3 Bedingungen
30.01.2022 10:51:46
Thomas
Ja in der Beispielmappe geht recht schnell, in der kompletten Anwendung dauert es etwas länger, kann allerdings auch an meinem Rechner liegen,
Das wichtigste ist es funktioniert.
Danke für die Hilfe.
AW: VBA CountIfs mit 3 Bedingungen
30.01.2022 11:05:59
onur
Blödsinn, ich habe mit 10.000 Zeilen getestet.
AW: VBA CountIfs mit 3 Bedingungen
26.01.2022 23:18:15
Yal
Hallo Thomas,
Es müsste geprüft werden, wie die Jahre in Spalte C formatiert sind, aber vermutlich als Zahl. Also Rudis Hinweis prüfen.
Ansonstens ist nur die Rede von Spalte C. Geprüft wird aber C1:Q30000 (?)
Wie reagiert diese Formel, wenn sie in einer Zelle reingeschrieben wird? auch Fehler?
VG
Yal
AW: VBA CountIfs mit 3 Bedingungen
27.01.2022 05:43:32
Thomas
Hallo Yal,
ja in Spalte C steht das Jahr als Zahl Formatiert.

C1:Q30000
das kommt daher weil ich bei zwei Bedingungen auch "verschachteln" musste damit es klappt, daher auch hier der Versuch. Wenn ich nur "C" nehme, kommt aber der gleiche Fehler.

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige