2017-02-23 61 views
1

如何設置vba代碼以允許用戶鍵入多個選項,然後根據該輸入引用單元格輸入列表過濾器?我試過這個,但它只是過濾第一個選擇。excel過濾多個引用?

我將其設置爲工作表腳本,所以它只能運行在一個片材,並將其設置爲僅當所述用戶輸入單元(A1,A2)被更新運行。

我然後試圖獲得列表中的列C:d來過濾,基於在A1和A2中的值。

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 

'This line stops the worksheet updating on every change, it only updates when cell is touched 
If Intersect(Target, Range("A1:B5")) Is Nothing Then Exit Sub 

With Sheets("TestTab") 

.Range("C1:D100").AutoFilter Field:=1, Criteria1:=.Range("A1").Value, Field:=2, Criteria1:=.Range("A2").Value 

End With 

End Sub 

回答

2

如果您想篩選什麼是在任一單元格A1或A2單柱:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 

    'This line stops the worksheet updating on every change, it only updates when cell is touched 
    If Intersect(Target, Range("A1:A2")) Is Nothing Then Exit Sub 

    With Sheets("TestTab") 

     .Range("C3:D100").AutoFilter Field:=1, Criteria1:=.Range("A1").Value, Operator:=xlOr, Criteria2:=.Range("A2").Value 

    End With 

End Sub 

如果你想在A2在A1和列d過濾柱C:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 

'This line stops the worksheet updating on every change, it only updates when cell is touched 
If Intersect(Target, Range("A1:A2")) Is Nothing Then Exit Sub 

With Sheets("Sheet1") 

    .Range("C1:D100").AutoFilter Field:=1, Criteria1:=.Range("A1").Value 
    .Range("C1:D100").AutoFilter Field:=2, Criteria1:=.Range("A2").Value 
End With 

End Sub 
+0

在第一個響應,如果我想通過A1和A2(不是OR)進行過濾。 – surfer349

+0

我怎樣才能調整這個輸入引用單元格(A1和A2)在主輸入表單上,然後更新單獨表單上的過濾器? 相同的代碼? – surfer349

+0

你想過濾掉A1和A2中的內容,或者只看A1和A2中的內容嗎?在xlOr上面使用上面的代碼將會在數據中留下A1和A2中的內容。如果您想要過濾掉A1和A2,您可以使用xlAnd。 – Andrew