【问题标题】:Excel VBA store countifs for multiple or conditionsExcel VBA 存储多个或条件的计数
【发布时间】:2012-01-12 02:58:33
【问题描述】:

我正在使用 VBA Countifs 根据条件获取某些值的计数。现在我需要任何一个条件来计算。

以下代码适用于计数“无视频”行和非“无视频”行。但我想将“无视频”或“无数据”计为单个输出,而另一个则没有这两个。

 Set R1 = appExcel.Range(cmdAudit2.Text & ":" & cmdAudit2.Text)
 Set R2 = appExcel.Range(cmbChoice.Text & ":" & cmbChoice.Text)

 NoVideos = appExcel.Application.CountIfs(R1, AuditType, R2, "No video")
 Videos = appExcel.Application.CountIfs(R1, AuditType, R2, "<>No video")

我发现了一些使用多个条件“and”运算符的示例。但我想要“或”条件。

目前我正在使用以下代码使其工作

 NoVideos = appExcel.Application.CountIfs(R1, AuditType, R2, "No video")
 NoAudited = appExcel.Application.CountIfs(R1, AuditType, R2, "Not audited")
 Videos = appExcel.Application.CountIfs(R1, AuditType, R2, "<>No video")

 Videos = Val(Videos) - Val(NoAudited)
 NoVideos = Val(NoVideos) + Val(NoAudited)

有没有什么好的方法可以用单个countifs完成。

【问题讨论】:

    标签: excel vba countif


    【解决方案1】:

    CountIfs 不允许使用这样的 OR 条件。您可以在一行代码中添加或减去 Countif,并避免中间步骤。您还可以使用 SumProduct,例如:

    = application.WorksheetFunction.SumProduct(((R2="No Video")*(R2="Not Audited"))+(R1 = AuditType))
    

    以上是空气代码,您需要在 Excel 中使 SumProduct 工作并记录它以获得正确的语法。有关使用 SumProduct 的信息,请参阅OzGrid page

    请注意,在上面的公式中,乘法创建 AND 运算,加法创建 OR 运算。

    【讨论】:

      猜你喜欢
      • 2023-02-08
      • 2016-03-12
      • 1970-01-01
      • 2017-11-03
      • 1970-01-01
      • 1970-01-01
      • 2016-09-27
      • 1970-01-01
      • 2016-10-02
      相关资源
      最近更新 更多