Clever-Excel-Forum

Normale Version: Tabellen übergreifende Filterung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,
ich nutze Excel 2013 und hab ein Dokument erstellt mit Filtern (Als Tabelle formatieren).

Das Dokument besteht aus mehreren Tabellen und bei 2 Tabellen hab ich den Filter erstellt. Nun will ich es so machen, dass ich einmal (egal bei welcher Tabelle) den Filter auswähle, sodass bei der anderen Tabelle automatisch der selbe Filter ausgewählt ist.

Ist das eigentlich möglich?
Hi Felix

mit Bordmitteln dürfte das nicht zu schaffen sein. Wenn überhaupt, dann mit VBA.
Hallöchen,

ja, das sollte mit VBA funktionieren. Kannst Du denn auch Makros verwenden?
Mit Makros hab ich noch nie gearbeitet, was kann man damit machen? :D
(27.05.2016, 20:28)Felix schrieb: [ -> ]Mit Makros hab ich noch nie gearbeitet, was kann man damit machen? :D

Hi Felix,

was VBA ist, kannst du u.a. hier nachlesen. Die erstellten Programmcodes nennt man Makros. Bei deinem Problem kann ich dir allerdings nicht helfen, aber wir haben genügend Spezialisten an Bord.
Hallöchen,

ohne Makrokenntnisse ist das nicht ganz so einfach.

Gehe mit der Tastenkombination ALT+F11 in den VBA-Editor.
Dort siehst Du auf der linken Seite den Projektexplorer. Du musst dort eventuell Deine Datei auswählen / anklicken.
Gehe dann in die Menüleiste, Menü Einfügen | Modul
Du solltest jetzt auf der rechten Seite ein leeres, weißes "Blatt" erhalten. Dort fügst Du folgenden Code ein:

Code:
Option Explicit
Sub FilterAuslesen()
'Variablendeklarationen
'Objekte
Dim objWS1 As Worksheet
Dim objWS2 As Worksheet
Dim objFLT As Filter
'Integer
Dim iCnt%
'Tabellenblatt 1 an Objektvariable uebergeben
Set objWS1 = Worksheets("Tabelle1")
Set objWS2 = Worksheets("Tabelle2")
'1. Spalte des gefilterten Bereichs
iCnt = 1
'Schleife ueber alle aktiven Filter
For Each objFLT In objWS1.AutoFilter.Filters
 'Wenn ein Filter gesetzt ist, dann
 If objFLT.On = True Then
   'Wenn ein zweites Kriterium gesetzt ist -
   'feststellbar ueber Operator (UND / ODER)
   If objFLT.Operator Then
     'Filter mit 2 Kriterien setzen, Einstellungen aus erster Tabelle uebernehmen
     objWS2.Cells(objWS1.AutoFilter.Range.Cells(1, iCnt).Column).AutoFilter Field:=iCnt, Criteria1:= _
       objFLT.Criteria1, Operator:=objFLT.Operator, Criteria2:=objFLT.Criteria2
   'oder wenn nur ein Kriterium gesetzt ist
   Else
     'Filter mit 1 Kriterium setzen, Einstellungen aus erster Tabelle uebernehmen
     objWS2.Cells(objWS1.AutoFilter.Range.Cells(1, iCnt).Column).AutoFilter Field:=iCnt, Criteria1:=objFLT.Criteria1
   'Ende Wenn ein zweites Kriterium gesetzt ist -
   End If
 'Ende Wenn ein Filter gesetzt ist, dann
 End If
 'Spaltenzaehler hochsetzen
 iCnt = iCnt + 1
'Ende Schleife ueber alle aktiven Filter
Next
End Sub

Du musst eventuell die Tabellennamen in diesen beiden Zeilen anpassen:
Set objWS1 = Worksheets("Tabelle1")
Set objWS2 = Worksheets("Tabelle2")

Das Makro überträgt erst mal die Einstellungen in einer Richtung auf ein zweites Blatt. Es dürfte nicht funktionieren, wenn mehrere Filterbereiche auf einem Blatt sind. Die Listen müssen bei diesem Code auf beiden Tabellenblättern an gleicher Stelle stehen.

Um das Makro zu testen, setzt Du den Cursor irgendwo zwischen Sub... und End Sub und drückst die F5-Taste. Dann schaust Du auf die Blätter. Falls eine Fehlermeldung kommt, postest Du bitte den Wortlaut der Meldung hier. Wenn nicht, auch gut. Dann schauen wir weiter, wie wir das in zwei Richtungen hinbekommen und das es automatisch läuft.