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中的命名范围。