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
我正尝试使用 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