Countif与多个或标准
我需要计算列中包含特定值的单元格的数量。 我目前使用下面的代码:
iVal = Application.WorksheetFunction.COUNTIF(Range("A:A"), "SAL")
不过,我现在需要计算有多less个单元格
-
SAL
, 或 -
PRE
最快的方法就是做2个COUNTIF:
iVal = Application.WorksheetFunction.CountIf(Range("A:A"), "SAL") + Application.WorksheetFunction.CountIf(Range("A:A"), "PRE")
您可以使用标准COUNTIF公式的VBA
等效(可能需要多个参数)。 这可以根据需要进行扩展
标准配方
=SUM(COUNTIF(A:A, {"SAL","PRE"}))
VBA等效
MsgBox Evaluate("Sum(COUNTIF(A:A,{""PRE"",""SAL""}))")
为什么不使用CountIfs
函数?
例:
Application.CountIfs(CR1_range, V_1, CR2_range, V_2, CR3_range, V_3, CR4_range, V_4)
其中CR1_range显然是您的范围,V_1是您的variables
编辑:哎呀! 刚刚看到它必须是一个OR语句,我的答案只能用于一个AND语句(没有删除作为参考任何人都感兴趣)
以下为我工作得很好: –
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)
这个网页有助于关于Excel中的命名范围。