2016-03-18 4 views
2

Я хочу получить общее количество строк, где процент плотности составляет более 60%, но менее 90%.Excel VBA autofilter между процентами

Я делаю это с помощью VBA для добавления фильтров в колонке плотности (в процентах формат):

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 

Но авто фильтр отображает ни одной строки

ответ

1

Чтобы применить между критериями для столбца W в Range.AutoFilter Method, вам нужно привести как нижнюю, так и верхнюю границы в одну командную строку.

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 отменяет первый. Однако вы должны проверить правильность ваших данных. Мне кажется, что если бы нижняя граница процентного фильтра была отменена, вы бы получили больше записей, чем вы хотели, а не совсем.

autofilter_between_pcts_before
Пример данных, прежде чем 'между' проценты фильтр применяется

autofilter_between_pcts_afterвыборки данных после того, как 'между' проценты фильтра применяется

Смежные вопросы