2017-02-23 59 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