-1

我在 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 语句,该语句允许我检查值“训练”是否存在于 C 列中,以及该值是否10存在于另一个 B 列中,如果两者在同一行中匹配,则计算两者都存在的所有行值存在,否则不计入。

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

4

2 回答 2

0

类似于Count if two criteria match - EXCEL 公式,你需要一个COUNTIFS函数

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

编辑

没有看到关于 Excel 版本的更新;COUNTIFS适用于 2007 +

SUMPRODUCT2004 年之前工作吗?

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

VBA刚刚测试了这个,它对我有用:

    myTest = Evaluate("=SUMPRODUCT((B2:B7=10)*(C2:C7=""training""))")
于 2014-10-28T21:13:56.100 回答
0

我设法解决了它。请看下面的例子

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
于 2014-10-28T21:29:02.503 回答