Excel 对A列中存在值而B列中存在其他值的行进行计数
我在Excel 2011中使用VBA(但保存到Excel 97-2004)计算C列中的所有匹配值,其中值为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 =
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解决方案