Многие .AutoFilter Критерии, которые действуют как ИЛИ - PullRequest
0 голосов
/ 24 января 2012

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

Используя VBA, я хочу использовать автофильтр, как показано ниже:

Лист1:

Username, Country, City
User1, America, New York
User2, America, Miami
User3, America, Los Angeles

Лист2:

Country, City, Contact
America, <>Miami, AllCitiesButMiami@test.com
America, Miami, OnlyMiami@test.com

Мой автофильтр пока выглядит так:

With ActiveSheet

    .AutoFilterMode = False 'Reset the filter

    'Set filter values
    With .Range("A1:C1")
        .AutoFilter
        .AutoFilter Field:=1, Criteria1:=VBA.Array(Country)
        .AutoFilter Field:=2, Criteria1:=VBA.Array(City)
    End With

    'Set contact to third visible cell
    TheContact = .UsedRange.Offset(1).SpecialCells(xlCellTypeVisible).Cells(3)

    .AutoFilterMode = False 'Reset the filter

End With

Результаты при итерации по Sheet1 должны быть:

Лист1: Ряд1 (Пользователь1): Город = Нью-Йорк, TheContact = "AllCitiesButMiami@test.com"

Лист1: Ряд2 (Пользователь2): Город = Майами, TheContact = "OnlyMiami@test.com"

Sheet1: Row3 (User3): City = Los Angeles, TheContact = "AllCitiesButMiami@test.com"

Проблема: Мне нужна помощь со вторым полем, "<> Майами" не подбирает все города, НО Майами

1 Ответ

0 голосов
/ 25 января 2012

Так я решил свои проблемы.Майами <> не забирали, пока я не использовал критерии "~ <> *"

....
Dim City
City = Worksheets("Sheet1").Range("C" & i) 'i = current row

'I set the filter to current row data
.AutoFilter Field:=14, Criteria1:=City

'Check row count (cell count / no. of columns)
rowCount = .Parent.AutoFilter.Range.SpecialCells(xlCellTypeVisible).Count / 3

'If the row count is < 2, no data, change the filter criteria to find other
If (rowCount < 2) Then
    .AutoFilter Field:=5, Criteria1:="~<>*"
End If
....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...