具有多个OR标准的Countif

时间:2012-01-04 12:07:40

标签: excel excel-vba excel-formula vba

我需要计算列中包含特定值的单元格数。我目前正在使用以下代码:

iVal = Application.WorksheetFunction.COUNTIF(Range("A:A"), "SAL")

但是,我现在需要计算有多少个单元格包含

  • SAL
  • PRE

4 个答案:

答案 0 :(得分:18)

您可以使用VBA等效的标准COUNTIF公式(可以使用多个参数)。这可以根据需要进行扩展

标准公式
=SUM(COUNTIF(A:A, {"SAL","PRE"}))

VBA等效
    MsgBox Evaluate("Sum(COUNTIF(A:A,{""PRE"",""SAL""}))")

答案 1 :(得分:8)

最快的方法就是做2个COUNTIFs:

iVal = Application.WorksheetFunction.CountIf(Range("A:A"), "SAL") + Application.WorksheetFunction.CountIf(Range("A:A"), "PRE")

答案 2 :(得分:2)

为什么不使用CountIfs函数?

示例:

Application.CountIfs(CR1_range, V_1, CR2_range, V_2, CR3_range, V_3, CR4_range, V_4)

CR1_range显然是你的范围而V_1是你的变量

编辑:哎呀!刚看到它必须是一个OR语句,我的答案只适用于一个AND语句(没有任何人有兴趣删除以供参考)

答案 3 :(得分:0)

以下效果很好: -

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)

webpage有助于了解Excel中的命名范围。