Excel VBA自动筛选百分比

我想获得密度百分比大于60%但小于90%的总行数。

我正在通过VBA在密度列(百分比格式)上添加filter:

With ActiveSheet .AutoFilterMode = False With .Range("A3:EB3") .AutoFilter .AutoFilter Field:=98, Criteria1:=">9" .AutoFilter Field:=99, Criteria1:=">2014" .AutoFilter Field:=23, Criteria1:=">60%" .AutoFilter Field:=23, Criteria1:="<90%" End With End With 

但自动filter不显示行

要在Range.AutoFilter方法的列W中应用BETWEEN标准,您需要将下边界和上边界都放在同一个命令行中。

  Dim cnt As Long With Worksheets("Sheet2") If .AutoFilterMode Then .AutoFilterMode = False With .Range("A3:EB" & .Cells(Rows.Count, "W").End(xlUp).Row) .AutoFilter .AutoFilter Field:=98, Criteria1:=">9" .AutoFilter Field:=99, Criteria1:=">2014" .AutoFilter Field:=23, Criteria1:=">60%", _ Operator:=xlAnd, Criteria2:="<90%" cnt = Application.Aggregate(2, 7, .Columns(23)) Debug.Print cnt End With If .AutoFilterMode Then .AutoFilterMode = False End With 

你的第二个23域的过滤命令是取消第一个。 但是,您仍然应该检查数据的有效性。 在我看来,如果百分比filter的下限被取消了,你将获得比你想要的更多的条目,而不是一个。

autofilter_between_pcts_before
“百分比之间”filter应用之前的示例数据

autofilter_between_pcts_after “百分比”filter之后的示例数据应用