Автофильтр на нескольких столбцах с несвязанными критериями - PullRequest
4 голосов
/ 19 июня 2019

Я пытаюсь отфильтровать свои данные в VBA.Данные выглядят так:

enter image description here

Я хочу, чтобы отображал только строки с FAIL , написанными на нем.Итак, я попытался .ListObjects("Table1").Range.AutoFilter Field:=1, Criteria1:="FAIL" .ListObjects("Table1").Range.AutoFilter Field:=2, Criteria1:="=FAIL"

Однако он просто скрывает все.Если бы данные были в одном и том же столбце, я бы использовал атрибут operator, но поскольку он находится в разных столбцах, я не знаю, что делать.

Так что можно отфильтровать несвязанные данные изразные колонки?

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 19 июня 2019

Фильтры используют критерии, связанные с AND, в нескольких столбцах, но вам нужен критерий, связанный с OR (который не поддерживается):

Таким образом, вы можете использовать вспомогательный столбец с COUNTIF

enter image description here

Например, следующая формула в C2 (и скопировать ее):

=COUNTIF(A2:B2,"FAIL")

И затем отфильтровать вспомогательный столбец для >=1.

2 голосов
/ 19 июня 2019

Я думаю, что-то вроде использования AdvancedFilter

Range("A1:B4").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range _
        ("D1:E3"), Unique:=False

enter image description here

1 голос
/ 19 июня 2019

Я так не думаю.Фильтры выглядят так, будто работают только с одним столбцом.Когда вы используете интерфейс для определения фильтра, он предлагает только способ установки критериев для одного столбца.

Фильтр один скроет все строки, которые не имеют FAIL в первом столбце, и отфильтрует дваскроет те, которые не имеют FAIL во втором.Поэтому, если FAIL не находится в обоих столбцах, строка будет скрыта.

Для этого можно использовать дополнительный столбец.Допустим, вы добавили столбец C, а вышеприведенные - A и B. Формула =OR(A2="FAIL", B2="FAIL")Затем фильтр на C = TRUE.

...