2017-06-08 59 views
1

我希望將兩個高級過濾器結合起來,看起來似乎無法正確完成。具有多個標準的高級過濾器

目標是過濾只有同時具有列表中的FIN和列表中的用戶ID的行。以下是單獨的過濾器。

當我順序運行它們時,只應用最後一個過濾器。

' Filter by FINs 
LastRow2 = Sheets("FINs").Cells(Rows.Count, 1).End(xlUp).Row 
Sheets("Data").Columns("B:B").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ 
    Sheets("FINs").Range("A1:A" & LastRow2), Unique:=False 
' Filter by userID 
LastRow3 = Sheets("Users").Cells(Rows.Count, 1).End(xlUp).Row 
Sheets("Data").Columns("C:C").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ 
    Sheets("Users").Range("A1:A" & LastRow3), Unique:=False 

謝謝!

+0

不能在同一範圍內應用兩種先進的過濾器。但是,您可以使用普通的'AutoFilter'來實現這一點,您可以依次將這兩個字段應用於這兩個字段。您還可以使用* one *高級過濾器來實現這一點,但是需要將兩個標準範圍放在一個工作表中彼此靠近。您最終可以將兩個標準範圍(通過代碼)複製到臨時新工作表中,然後在應用高級過濾器後將其刪除。 –

+0

我可以暫時將這些值複製到同一張表中,但我對vba的理解並不足以讓高級過濾器語法正確無誤。你可以幫我解決這個問題嗎? – Justin

+0

'Sheets(「FINs」)''列'B'沒有數據?如果是這樣的話,你可以從'Sheets(「Users」)'中複製另一個列表。 –

回答

0

我與AutoFilter有類似的問題,然後傳遞數組(FIN 1,FIN 2,..)和數組(用戶1,用戶2,...),但它沒有工作。

例如,

我要列出下來才具有柱A FIN 1,那麼COL B必須是用戶1 但結果是沒有,只要柱A已經FIN 1它將在列表中。自動過濾器將返回這2個數組中可能的所有組合。

我建議添加一個唯一列,然後使用唯一列進行過濾。 然後過濾使用自動篩選有如下數組:

ActiveSheet.Range("$A$1:$C$7").AutoFilter Field:=3, 
    Criteria1:=Array("FIN 2|User 2", "FIN 4|User 4", "FIN 5|User 5", "FIN 6|User 6"), 
    Operator:=xlFilterValues 

enter image description here