2012-01-24 55 views
0

我有兩個工作表,一個用於過濾另一個工作表。很多.AutoFilter標準的行爲像OR

使用VBA我希望用自動篩選,如下面:

工作表Sheet1:

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

Sheet2中:

Country, City, Contact 
America, <>Miami, [email protected] 
America, Miami, [email protected] 

我自動篩選到目前爲止是這樣的:

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應該是:

工作表Sheet1:ROW1(用戶1):城市=紐約,TheContact = 「[email protected]

工作表Sheet1:行2(用戶2):城市=邁阿密,TheContact = 「[email protected]

工作表Sheet1:ROW3(用戶3):城市=洛杉磯,TheContact = 「[email protected]

問題: 我需要幫助與第二場,「<>邁阿密」並沒有拿起所有的城市,但邁阿密

+2

''<> Miami''可以用作在自動過濾器的標準,但搜索它通過將標準設置爲「紐約」與「<>邁阿密」不匹配。換句話說,您可以使用Sheet2中的值作爲Sheet1上的自動過濾器的標準,但不能反過來。 –

+0

是否有可能做這樣的事情: 。自動過濾字段:= 4,標準1:=邁阿密,或<>邁阿密 –

回答

0

這是我如何解決我的問題。所述<>邁阿密沒有被拾起直到我使用的標準「〜<> *」

.... 
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 
....