CountIf() 函数来自 VBA

CountIf() Function From VBA

我正尝试使用 VBA 语法中的 CountIf() 函数,但出现

错误

Wrong number of arguments or invalid property assignment

这是我的语法 - 我需要更改什么才能成功?

Dim countofemps As Integer

Sheets("All emps").Select
Selection.AutoFilter
ActiveSheet.ListObjects("Allemps").Range.AutoFilter Field:=1, Criteria1:=filtervalue
ActiveSheet.ListObjects("Allemps").Range.AutoFilter Field:=5, _
    Criteria1:=">=1/29/2017", Operator:=xlAnd, Criteria2:="<=3/1/2017"
'This line throws error
countofemps = WorksheetFunction.CountIf(Range("'All emps'!A2:A2000"), filtervalue, Range("'All emps'!B2:B2000"))

我猜你想要的是 CountIfs,第二个参数列的条件是 "not empty":

由于您还想过滤 column 5 上的日期,您可以将所有条件集成到 countifs 函数中(无需过滤),如下所示:

With Sheets("All emps").ListObjects("Allemps").DataBodyRange
    countofemps = WorksheetFunction.CountIfs( _
        .Columns(5),  ">=1/29/2017", _
        .Columns(5), "<=3/1/2017", _
        .Columns(1), filtervalue, _
        .Columns(3), "<>")
End With

我会按如下方式进行:

With Sheets("All emps") '<--| reference your sheet
    With .ListObjects("Allemps").Range '<--| reference its "Allemps" table range
        .AutoFilter '<--| clear any previous filter
        .AutoFilter Field:=1, Criteria1:=filtervalue '<--| filter referenced range on its first column with given filtervalue
        .AutoFilter Field:=5, Criteria1:=">=1/29/2017", Operator:=xlAnd, Criteria2:="<=3/1/2017" '<--| filter reference range on its fifth column with given limit dates
        countofemps = Application.WorksheetFunction.Subtotal(103, .Columns(1)) -1  '<--| count the number of filtered cells on its first column except header cellr
    End With
End With