Excel 对A列中存在值而B列中存在其他值的行进行计数

Excel 对A列中存在值而B列中存在其他值的行进行计数,excel,vba,count,excel-2011,Excel,Vba,Count,Excel 2011,我在Excel 2011中使用VBA(但保存到Excel 97-2004)计算C列中的所有匹配值,其中值为training。为此,我使用以下代码: Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$A$1" Then Dim r As Range Dim c Set r = Sheets("Sheet2").Range("C:C") c =

我在Excel 2011中使用VBA(但保存到Excel 97-2004)计算C列中的所有匹配值,其中值为
training
。为此,我使用以下代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = "$A$1" Then

    Dim r As Range
    Dim c
    Set r = Sheets("Sheet2").Range("C:C")
    c = Application.WorksheetFunction.CountIf(r, "training")
    MsgBox "column C has " & c & " instances of 'training'"

    End If
End Sub
然而,我想做的是创建一个CountIfs语句,它允许我检查值“training”是否存在于列C中,以及值
10
是否存在于另一列B中,如果两个值在同一行中匹配,则对两个值都存在的所有行进行计数,否则不进行计数

有人能帮我解决这个问题吗?

类似于,您需要一个
COUNTIFS
函数

=COUNTIFS(B2:B7, 10, C2:C7, "training")
编辑

没有看到有关Excel版本的更新<代码>国家/地区适用于2007年+

SUMPRODUCT
在2004年之前有效吗

=SUMPRODUCT((B2:B7=10)*(C2:C7="training"))
VBA
中,我刚刚测试了这个,它对我有效:

    myTest = Evaluate("=SUMPRODUCT((B2:B7=10)*(C2:C7=""training""))")

我设法解决了它。请参见下面的示例

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$1" Then

Dim r As Range
Dim p As Range
Dim t As Range
Dim u As Range
Dim c
Set r = Sheets("Sheet2").Range("C:C")
Set p = Sheets("Sheet2").Range("B:B")
Set t = Sheets("Sheet1").Range("B1")
Set u = Sheets("Sheet1").Range("C1")
c = WorksheetFunction.CountIfs(r, t, p, u)
MsgBox "column C has " & c & " instances of 'training'"

End If
End Sub

我目前正在使用excel for mac 2011,但我正在将工作簿保存在excel 97至2004中,因为需要它与Windows中的excel 2010兼容。我不希望在公式中使用它,但理想情况下需要vba解决方案