0

我正在使用 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")

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

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

 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)

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

4

1 回答 1

2

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

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

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

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

于 2011-12-03T16:48:07.127 回答