Как отфильтровать несколько столбцов с условием, используя Excel VBA - PullRequest
0 голосов
/ 01 сентября 2018

Сценарий

У меня есть следующий лист Excel со значениями

enter image description here

Что мне нужно

Я хочу отфильтровать значения только при соблюдении следующих условий

If Status = "RO" OR Status = "SS" OR (Status = "NO" AND StartDate <>"") OR Status = "INVEST")

с использованием фильтра Excel с VBA.

Это очень большая таблица, и если это возможно с помощью методов фильтрации, она будет быстрее, чем сравнение значений по одному и копирование по одному. Вот почему я хочу использовать фильтр. Это возможно?

Обычная запись, дающая только следующее, что я не могу понять, как это сделать в моей ситуации

Например: ActiveSheet.Range("$A$3:$D$21").AutoFilter Field:=4, Criteria1:="SS"

а как проверить с фильтром if blank on start date and a particular value on Status?

1 Ответ

0 голосов
/ 01 сентября 2018

Установите ваши данные в виде таблицы Excel, выделив ячейку в заполненном диапазоне и нажав Ctrl + T .

Добавьте дополнительный столбец в конце под названием Include. В верхнюю ячейку этого столбца поместите следующее (он автоматически фильтрует все строки):

=OR([Status] = "RO", [Status]  = "SS", AND([Status] = "NO",[Start Date] <>""),[Status] = "INVEST")

Используйте следующие строки VBA в вашем коде:

With ThisWorkbook.Worksheets("Yoursheetname").ListObjects("YourTableName").Range
    .AutoFilter
    .AutoFilter Field:=5, Criteria1:= _
    "TRUE"
End With

Данные:

data

...