Ich suche eine Möglichkeit eine bestimmte Spalte im 2. Tabellenblatt zu filtern. Welche Spalte gefiltert werden soll, wird im 1. Tabellenblatt in einer Zelle bestimmt (z.B. D4) D4 ist im Inhalt von einer Tabelle abhängig, die auch im 1. Tabellenblatt ist. Wenn D4 im 1. Tabellenblatt den Inhalt "Projekt A" hat dann soll im 2. Tabellenblatt die 1. Spalte nach der Zelle durchsucht werden die auch den Inhalt "Projekt A" hat. Wenn diese Zeile gefunden ist, dann soll sie nach "x" gefiltert werden. Inhalt aller Zeilen ist entweder "x" oder "" (leer). Das Filtern soll über einen Button ausgeführt werden.
Hat jemand eine Idee? Beispieldatei ist angehängt. Ich kenne mich mit VBA nahezu gar nicht aus und benötige es wenn max. 1 mal im Jahr ^^. Danke im voraus für gute Ideen.
31.10.2022, 02:33 (Dieser Beitrag wurde zuletzt bearbeitet: 31.10.2022, 02:33 von Ralf A.)
...Du kannst Dir aber auch gern das mal anschauen. Zum besseren Verständnis den ganzen Thread durchlesen... Ist nicht das Gleiche, aber das Prinzip passt ganz gut... :)
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben. Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
Das Prinzip in dem Beitrag entspricht dem was ich suche. Nur bei mir kommt noch hinzu, dass die "Projekte" in Tabelle1 in Zeilen und in Tabelle 2 in Spalten stehen. Zusätzlich filtere ich nicht nach der Nummer sondern nur Zeilen die "x" enthalten.
Ich habe mich grade etwas dran versucht, bekomme es aber alleine nicht hin :(
31.10.2022, 11:12 (Dieser Beitrag wurde zuletzt bearbeitet: 31.10.2022, 11:23 von Ralf A.)
(31.10.2022, 10:33)schokokekseis schrieb: Das Prinzip in dem Beitrag entspricht dem was ich suche. Nur bei mir kommt noch hinzu, dass die "Projekte" in Tabelle1 in Zeilen und in Tabelle 2 in Spalten stehen. Zusätzlich filtere ich nicht nach der Nummer sondern nur Zeilen die "x" enthalten.
Ich habe mich grade etwas dran versucht, bekomme es aber alleine nicht hin :(
Ob Du nach Nummern oder x'sen filterst, spielt doch keine Rolle. In der Filteranweisung legst Du fest, in welchem Bereich, in welcher Spalte wonach auch immer gefiltert werden soll. Und für die Herkunft des zu filternden Wertes ist es egal, ob der aus Zelle(2,1) oder (1,2) kommt. Das legst Du doch fest.
Und... "ich bekomme es nicht hin" ist eine Info ohne Wert. Woran hapert es konkret? Zeig was Du hast, sag wo es klemmt... aber spekuliere nicht darauf, dass es Dir irgendwer lösen wird, nur weil Du ein paar Verständnisprobleme hast. Die Hilfe hier ist darauf angelegt, die Art des Problems zu lösen, nicht das primäre Problem selbst. Denn geholfen ist Dir nur dann, wenn Du das in Zukunft selbst lösen kannst...
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben. Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
31.10.2022, 14:10 (Dieser Beitrag wurde zuletzt bearbeitet: 31.10.2022, 14:11 von schokokekseis.)
Ich habe jetzt nochmal etwas rumprobiert und bin auf folgendes gekommen. Für mein Verständnis sollte das funktionieren. Excel sagt mir aber, dass meine Variable "Projekt" 0 ist, obwohl in dieser Zeile erst der Inhalt der Zelle D4 zugewiesen wird? (rot markiert) Kann mir hier jemand helfen? Ganze Datei ist auch nochmal angehangen.
Danke!
Sub Filtern()
' Variable Projekt um Text zu speichern für die Überprüfung & Variable i für die Suche der entsprechenden Spalte Dim Projekt As Long Dim i As Integer
'Variable Projekt wird als Inhalt von Zelle D4 aus "Tabelle1" festgesetzt Projekt = Worksheets("Tabelle1").Cells("D4")
'Ab Spalte 14 beginnen die Projekte die zu vergleichen sind und werden anschließend nach dem Inhalt von Zelle D4 "Tabelle1" verglichen For i = 14 To 44 If Worksheets("Tabelle2").Cells(1, i).Value = Filt Then
'Tabellenblatt "Tabelle2" aktivieren und die übereinstimmende Spalte filtern ThisWorkbook.Worksheets("Tabelle2").Activate ActiveSheet.Range(1, i).AutoFilter i, "x"
In meinem Kopf hört es sich eigentlich recht simpel an.
Ich habe in Tabelle1 eine Liste mit Projekten die jährlich überprüft werden, ab B7 abwärts. (erweiterbar) In Tabelle2 habe ich einen Generator für Standard Produktionslenkungspläne unserer Projekte. Aus diesem Grund sind rechts daneben ab N1 die Projekte in Zeile 1 aufgelistet. (auch das ist erweiterbar)
Wenn ich in Tabelle1 Zelle D4 Projekt A eintrage und den Button Filtern betätige, dann soll in Tabelle2 Zeile 1 nach dem Projekt A durchsucht werden und nach Zellen mit dem Inhalt "x" gefiltert werden. Wenn Projekt D eingetragen wird soll Projekt D gefiltert werden und so weiter...
PS: die beiden Fehler habe ich korrigiert, leider kommt nun der Fehler in dieser Zeile: (rot)
Sub Filtern()
' Variable Filt um Text zu speichern für die Überprüfung & Variable i für die Suche der entsprechenden Spalte Dim Projekt As String Dim i As Integer
'Variable Filt wird als Inhalt von Zelle D4 aus "Tabelle1" festgesetzt Projekt = Worksheets("Tabelle1").Range("D4")
'Ab Spalte 14 beginnen die Projekte die zu vergleichen sind und werden anschließend nach dem Inhalt von Zelle D4 "Tabelle1" verglichen For i = 14 To 44 If Worksheets("Tabelle2").Cells(1, i).Value = Projekt Then
'Tabellenblatt "Tabelle2" aktivieren und die übereinstimmende Spalte filtern ThisWorkbook.Worksheets("Tabelle2").Activate ActiveSheet.Range(1, i).AutoFilter i, "x"
31.10.2022, 16:02 (Dieser Beitrag wurde zuletzt bearbeitet: 31.10.2022, 16:05 von Ralf A.)
...mal abgesehen davon, dass die Struktur stark verbesserungswürdig ist und auch davon, dass man zum Filtern keine Schleifen oder Buttons braucht (einfach auf das zu filternde Projekt in Tab1 klicken), anbei mal ein Beispiel...
VBA Filtern.xlsm (Größe: 21,29 KB / Downloads: 2)
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben. Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
@Ralf: Danke erstmal, aber ich hab ja auch geschrieben, dass ich damit nahezu keine Erfahrungen habe. Eine Frage noch funktioniert das Filtern auch anstatt auf die jeweilige Zeile zu klicken über die Zelle z.B. A1 in Tabelle1? Weil diese habe ich schon für eine andere Funktion und würde gerne über D4 beides steuern, das wäre bedienerfreundlicher.