2017-02-23 6 views
1

Wie kann ich VBA-Code einrichten, damit der Benutzer mehrere Auswahlen eingeben kann, und dann die zugehörigen Listenfilter basierend auf dieser Eingabe, Referenzzelle? Ich habe das versucht, aber es filtert nur die erste Auswahl.Excel-Filterung von mehreren Referenzen?

Ich stelle es als Arbeitsblatt Skript, also es läuft nur auf, dass ein Blatt und legen Sie es auf nur ausgeführt, wenn der Benutzer Eingangszellen (A1, A2) aktualisiert werden.

Ich habe dann versucht, in den Spalten C die Listen bekommen: D, auf den Werten in A1 und A2 zu filtern.

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 

Antwort

2

Wenn Sie versuchen, eine einzelne Spalte mit zu filtern, was in ist entweder Zelle A1 oder 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 

Wenn Sie versuchen, Spalte C auf A1 und Spalte D auf A2 zu filtern:

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

In der ersten Antwort, was ist, wenn ich von A1 und A2 filtern möchten (nicht OR). – surfer349

+0

Wie kann ich dies so einstellen, dass die Eingangsreferenzzellen (A1 & A2) auf einem Haupteingabeblatt liegen und die Filter dann auf einem separaten Blatt aktualisiert werden? Gleicher Code? – surfer349

+0

Versuchen Sie herauszufiltern, was in A1 & A2 ist, oder sehen Sie nur, was in A1 & A2 ist? Wenn Sie den obigen Code mit xlOr verwenden, bleiben sowohl die A1 als auch die A2 in Ihren Daten erhalten. Sie würden xlAnd verwenden, wenn Sie versuchen, A1 & A2 herauszufiltern. – Andrew

Verwandte Themen