Ich muss die Anzahl der Zellen in einer Spalte zählen, die einen bestimmten Wert enthalten. Ich verwende derzeit den folgenden Code:
iVal = Application.WorksheetFunction.COUNTIF(Range("A:A"), "SAL")
Ich muss jetzt jedoch zählen, wie viele Zellen enthalten sind
SAL
, oder PRE
Der schnellste Weg wäre einfach 2 COUNTIFs zu machen:
iVal = Application.WorksheetFunction.CountIf(Range("A:A"), "SAL") + Application.WorksheetFunction.CountIf(Range("A:A"), "PRE")
Sie können das VBA
-Äquivalent einer COUNTIF-Standardformel verwenden (die mehrere Argumente enthalten kann). Dies kann nach Bedarf erweitert werden
Standardformel=SUM(COUNTIF(A:A, {"SAL","PRE"}))
VBA-ÄquivalentMsgBox Evaluate("Sum(COUNTIF(A:A,{""PRE"",""SAL""}))")
Warum verwenden Sie nicht die CountIfs
-Funktion?
Beispiel:
Application.CountIfs(CR1_range, V_1, CR2_range, V_2, CR3_range, V_3, CR4_range, V_4)
Wobei CR1_range offensichtlich Ihr Bereich ist und V_1 Ihre Variable ist
Bearbeiten: Ooops! Ich habe gerade gesehen, dass es sich um eine OR -Anweisung handeln muss, meine Antwort würde nur für eine AND-Anweisung funktionieren (wurde nicht gelöscht, da sich jemand dafür interessiert).
Folgendes hat für mich gut funktioniert: -
Dim val1 as string, val2 as string
val1 = "value1"
val2 = "value2"
count = Application.WorksheetFunction.CountIfs(ThisWorkbook.Names("firstname").RefersToRange, val1 , ThisWorkbook.Names("secondname").RefersToRange, val2)
Diese Webseite hilft bei benannten Bereichen in Excel.