【问题标题】:Countif With Multiple OR Criteria具有多个 OR 条件的 Countif
【发布时间】:2012-02-02 08:10:06
【问题描述】:

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

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

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

  • SAL
  • PRE

【问题讨论】:

  • 为什么不简单的第二行iVal2 = Application.WorksheetFunction.COUNTIF(Range("A:A"), "PRE") 然后添加(或报告两个)变量作为总数?
  • 因为我要添加大约 20 个变量并为大约 30 个不同的列执行此操作,所以如果我可以将它们全部放在一行中,将会减少很多工作!跨度>
  • 如何将列的值读入数组?然后就可以循环,加条件等等?
  • 我使用的是 2010 年,难道 CountIfs 函数仅在所有条件都为真时才有效,而不是在每个条件都为真时有效吗?
  • “我使用的是 2010 年,难道 CountIfs 函数不是只有在所有条件都为真时才有效,而不是在每个条件都为真时才有效吗?” 是的。

标签: excel excel-formula vba


【解决方案1】:

您可以使用 VBA 等效于标准 COUNTIF 公式(可以采用多个参数)。这个可以根据需要展开

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

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

【讨论】:

  • +1 迄今为止最好的答案!可能需要添加 VBA 选项来传递字符串数组MsgBox Evaluate("Sum(COUNTIF(A:A,{""" & Join(v, """,""") & """}))")
  • @chrisneilsen thx - 以及对字符串数组的极好建议。
【解决方案2】:

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

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

【讨论】:

  • +1,这是您最好的方法,因为 CountIf 只能接受一个参数。
  • 这很好用,但从长远来看,我最终会遇到很多变量,所以尝试找到一种更有效的方法,不过是很好的中间方法!
  • @brettdj 不知道您可以使用 {} 添加更多值,它不在文档中,但真的很好。 +1
  • 这不会计算包含两次 SAL 和 PRE 的单元格吗?
  • 有什么方法可以将值列表与 {arg1, arg2, ... } 一起使用吗?符号 { 被识别为无效字符....
【解决方案3】:

为什么不使用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 语句(没有删除以供参考,以防有人感兴趣)

【讨论】:

    【解决方案4】:

    以下对我来说效果很好:-

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-22
      • 2017-03-10
      相关资源
      最近更新 更多