VBA如果Countifs

时间:2014-09-17 15:02:10

标签: excel vba excel-vba excel-2007

如果有数据,我使用下面的内容只会发出一段代码,

If WorksheetFunction.CountIf(wksdata.Range("D:D"), "ASM001") > 0 Then

但是,我需要它在CountIfs下工作,因为有些工作表有多个标准,例如下面的示例,它使用BIR001,BIR004,BIR006,ITI001。如果其中至少有一个,我需要它继续。

If WorksheetFunction.CountIfs(wksdata.Range("D:D"), "BIR001", wksdata.Range("D:D"), "BIR004", wksdata.Range("D:D"), "BIR006", wksdata.Range("D:D"), "ITI001") > 0 Then

你能找到我的错误吗?

3 个答案:

答案 0 :(得分:3)

我意识到我应该在一起添加4个CountIf函数。

If (WorksheetFunction.CountIf(wksdata.Range("D:D"), "BIR001") _
    + WorksheetFunction.CountIf(wksdata.Range("D:D"), "BIR004") _
    + WorksheetFunction.CountIf(wksdata.Range("D:D"), "BIR006") _
    + WorksheetFunction.CountIf(wksdata.Range("D:D"), "ITI001")) > 0 Then

看起来有点乱,但做得好!

答案 1 :(得分:3)

这将是一个让它不那么混乱的好方法:

Dim count As Integer

With Application.WorksheetFunction
   count = .CountIf(wksdata.Range("D:D"), "BIR001") + _
           .CountIf(wksdata.Range("D:D"), "BIR004") + _
           .CountIf(wksdata.Range("D:D"), "BIR006") + _
           .CountIf(wksdata.Range("D:D"), "ITI001")
End With

If (count > 0) Then

答案 2 :(得分:0)

这可能是一个使用方括号的机会,但你不应该使用完整的列引用。

If CBool([SUMPRODUCT(--(D1:D99999={"BIR001","BIR004","BIR006","ITI001"}))]) Then