Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: vba countifs mit 2 Bedingungen

vba countifs mit 2 Bedingungen
09.03.2015 09:53:22
Bjoern
Hallo zusammen,
ich habe eine Frage zur countifs-Funktion in vba. Ich habe in einer Excel-Tabelle zwei gefüllte Spalten, die mit countifs ausgewertet werden sollen.
Die Struktur der Tabelle ist folgende:
Spalte A Spalte B
....0..........LS.....
....0..........LS.....
....0..........LS.....
....1..........US.....
....1..........US.....
....1..........US.....
....2..........LS.....
....2..........LS.....
....2..........LS.....
Mit der countif-Funktion möchte ich gerne 2 unterschiedliche Auswertungen machen.
1. Herausfinden wie viele unterschiedliche Zahlenwerte in Spalte A vorliegen,
unabhängig von Spalte B
Dies habe ich folgendermaßen gelöst:
Application.CountIfs(Range("A1:A10"), ">=0") ~f~
Lsg.: In diesem Fall liegen 3 unterschiedliche Zahlenwerte vor.
2. Herausfinden wie viele unterschiedliche Zahlenwerte in Spalte A mit der
Buchstabenkombination "LS" in Spalte B vorliegen
~f~ Application.CountIfs(Range("A1:A10"), ">=0"),Range("B1:B10"),"=LS")
Hier wird wird die Anzahl 0 angezeigt. Bei dieser Auswertung sollte die Anzahl=2
sein
Was mache ich falsch?
Grüße

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: vba countifs mit 2 Bedingungen
09.03.2015 11:26:05
Sheldon
Hallo Björn,
lass mal das '=' Zeichen vor LS weg. Klappts?
Gruß
Sheldon

AW: vba countifs mit 2 Bedingungen
10.03.2015 17:42:57
Bjoern
Die Formel funktioniert, aber leider nicht wie gewünscht.
Application.CountIfs(Range("A1:A10"), ">=0"),Range("B1:B10"),"LS")
mit der Formel werden alle Einträge mit gleichem Wert aus Spalte A und der Bezeichnung "LS" aus Spalte B gezählt.
Gewünscht ist, dass die Anzahl ungleicher Werte aus Spalte A mit der Bedingung, dass Spalte B den Eintrag "LS" hat ermittelt.
Die Formel sollte die Zahl 2 auswerfen und nicht 6.
Grüße, Björn

Anzeige
AW: vba countifs mit 2 Bedingungen
11.03.2015 21:25:06
Sheldon
Hallo Björn,
schon die erste Formel kann m.E. nicht 3 ausgeben, wie Du schreibst, denn bei CountIfs handelt es sich um die Excelfunktion ZÄHLENWENNS. Die zählt aber nicht die Anzahl unterschiedlicher Werte in einer Spalte, sondern alle Einträge, auf die die Bedingung zutrifft. Aus Deinem Beispiel kommt also 9 heraus, nicht 3.
Wieso VBA?
Gruß
Sheldon

Anzeige
AW: vba countifs mit 2 Bedingungen
12.03.2015 18:12:03
Bjoern
Ich habe es hinbekommen, Danke für Deine Hilfe.
Eine Frage habe ich noch. In der Formel gibt es die Bedingung, dass erst gezählt werden soll, wenn "FS" in einer Spalte geschrieben ist.
master_FS = Evaluate("SUM(IF((C$3:C$2600<>"""")*(D$3:D$2600=""FS""),1/COUNTIF(C$3:C$2600,C$3:C$2600)))")
In einigen Spalten steht Fs.2 geschrieben (2 zusätzliche Zeichen). Kann man den String bzw. die Bedingung so erweitern, das trotz der zusaätzlichen Zeichen das FS erkannt wird. like Operatir oder mid()?
Grüße

Anzeige
AW: vba countifs mit 2 Bedingungen
12.03.2015 19:08:52
Sheldon
Hallo Björn,
das müsste mit left(D$3:D$2600, 2) klappen.
Gruß
Sheldon

AW: vba countifs mit 2 Bedingungen
15.03.2015 15:48:39
Bjoern
Die left() Version funktioniert nur teilweise. Alternativ dazu habe ich es noch mal mit dem like-Operator versucht. Das klappt aber auch nicht :(
Im Anhang habe ich das Makro beigefügt. Vielleicht könnt Ihr mal in einer freien Minute drüberschauen...
Wie bereits erwähnt, soll die maximale Anzahl der Namen/Bezeichnungen A01, A02, A02.1-A02.4 herausgefunden werden, wenn die Bedingung in Spalte B erfüllt wird. Die zusätzlichen Zeichen am Namen/Bezeichnung im sheet "test" sollen beim auslesen und der anschließenden Addition ignoriert werden.
https://www.herber.de/bbs/user/96377.xlsm
Grüße
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA COUNTIFS mit zwei Bedingungen in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne dein Excel-Dokument und wechsle in den VBA-Editor, indem du ALT + F11 drückst.

  2. Füge ein neues Modul hinzu: Klicke im Projektfenster mit der rechten Maustaste auf dein Projekt, wähle „Einfügen“ und dann „Modul“.

  3. Verwende die Application.WorksheetFunction.CountIfs Methode für deine Berechnungen. Hier ein Beispiel:

    Dim count As Long
    count = Application.WorksheetFunction.CountIfs(Range("A1:A10"), ">=0", Range("B1:B10"), "LS")
    MsgBox count
  4. Prüfe die Ergebnisse: Achte darauf, dass die Bedingungen korrekt gesetzt sind und die Daten in den Referenzbereichen vorhanden sind.


Häufige Fehler und Lösungen

  • Fehler: Falsches Ergebnis bei CountIfs

    • Lösung: Stelle sicher, dass kein = Zeichen vor dem Kriterium steht. Beispielsweise sollte "=LS" zu "LS" geändert werden.
  • Fehler: Ungenaue Zählung

    • Lösung: CountIfs zählt alle Einträge, die den Bedingungen entsprechen. Um die Anzahl unterschiedlicher Werte zu zählen, verwende eine Kombination aus Evaluate und COUNTIF.

Alternative Methoden

  • Verwendung von Evaluate für unterschiedliche Werte:

    Dim uniqueCount As Long
    uniqueCount = Evaluate("SUM(IF((A1:A10>=0)*(B1:B10=""LS""),1/COUNTIF(A1:A10,A1:A10)))")
    MsgBox uniqueCount
  • Verwendung des Dictionary-Objekts: Dies ist eine weitere Möglichkeit, um einzigartige Werte zu zählen, wenn du mit VBA arbeitest.


Praktische Beispiele

  1. Zählung aller Einträge in Spalte A, wenn Spalte B „LS“ ist:

    Dim countLS As Long
    countLS = Application.WorksheetFunction.CountIfs(Range("B1:B10"), "LS")
    MsgBox countLS
  2. Zählung einzigartiger Werte in Spalte A mit „LS“ in Spalte B:

    Dim uniqueCount As Long
    uniqueCount = Evaluate("SUM(IF((A1:A10>=0)*(B1:B10=""LS""),1/COUNTIF(A1:A10,A1:A10)))")
    MsgBox uniqueCount

Tipps für Profis

  • Nutze die Dictionary-Objekte, um die Leistung beim Zählen einzigartiger Werte zu verbessern, insbesondere bei großen Datenmengen.
  • Experimentiere mit dem Like-Operator, um Muster zu erkennen (z.B. If Left(B1, 2) = "FS" Then).
  • Halte deine VBA-Umgebung sauber, indem du unnötige Module und Makros regelmäßig entfernst.

FAQ: Häufige Fragen

1. Wie zähle ich einzigartige Werte in einer Range mit VBA?
Verwende die Evaluate-Funktion in Kombination mit COUNTIF, um einzigartige Werte zu zählen.

2. Was ist der Unterschied zwischen CountIf und CountIfs?
CountIf zählt nur die Einträge, die einer Bedingung entsprechen, während CountIfs mehrere Bedingungen gleichzeitig berücksichtigt.

3. Wie kann ich mit Like arbeiten?
Der Like-Operator ermöglicht das Vergleichen von Zeichenfolgen, um Muster zu erkennen. Zum Beispiel: If B1 Like "LS*" Then zählt auch „LS1“, „LS2“ usw.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige