2015-10-01 3 views
0

Я пытаюсь использовать свой макрос для фильтрации своих данных, я хочу разрешить все, кроме трех критериев. Мой код работает с двумя критериями, но он не позволит мне добавить третий, и по какой-то причине я не могу использовать функцию Criteria1: = Array. Мой код:Исключения автофильтра с более чем двумя критериями

wsO.Range("A1").AutoFilter Field:=36, Criteria1:="<>Accept as Medicare product", Criteria2:="<>Accept as NJ Medicaid product", Criteria3:="<>Accept as Medicaid product", Operator:=xlFilterValues 

Который возвращает имя аргумент не найден (потому что я верю, что можно добавить только 2 критерия таким образом)

Я также попытался:

wsO.Range("A1").AutoFilter Field:=36, Criteria1:=Array(_ 
"<>Accept as Medicare product", "<>Accept as NJ Medicaid product", "<>Accept as Medicaid product"), Operator:=xlFilterValues 

Какие возвращает мне ошибку: Время выполнения Ошибка «1004»: Определенная пользователем или объектная ошибка.

+0

Я считаю, что Массив в фильтрах работает только в нескольких совпадениях, а не в наборе «<>». Вы можете уйти со вспомогательной колонкой, но – Raugmor

+0

Два критерия - это максимум для исключений. Нет никакого способа обойти это с автофильтром, за исключением того, что ваш цикл кода проходит через ваш список и создает критерии для всех значений ALLOWED. –

+0

Вы можете использовать такой подход: http://stackoverflow.com/questions/32882661/excel-vba-autofilter-contains-with-multiple-criteria/32882806?noredirect=1#comment53597232_32882806 или использовать вместо этого расширенный фильтр или вспомогательную колонку с формулой. – Rory

ответ

0

Вы можете перемещаться по диапазону и скрывать строки.

Sub OhYa() 
    Dim rws As Long 
    Dim rng As Range 
    Dim f As Range 
    Dim a As String, b As String, c As String 

    a = "Accept as Medicare product" 
    b = "Accept as NJ Medicaid product" 
    c = "Accept as Medicaid product" 

    rws = Cells(Rows.Count, "A").End(xlUp).Row 
    Set rng = Range("A2:A" & rws) 
    Application.ScreenUpdating = 0 

    For Each f In rng.Cells 
     If f <> a And f <> b And f <> c Then 
      f.EntireRow.Hidden = 1 
     End If 
    Next f 


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