Filter-Funktion mehrstufig anwenden
21.05.2024 12:12:14
Fabian
ich habe gerade eine Aufgabenstellung, bei der ich nicht auf eine saubere Lösung komme...
Dabei sollen Stücklisten mehrstufig nach der Verwendung bestimmter Komponenten durchsucht werden. Mir liegt für jede Stücklistenebene ein Tabellenblatt vor, worin irrelevante Komponenten bereits entfernt wurden. Nun möchte ich für die Einzelteile auswerten in welchen Baugruppen sie eingesetzt werden, und das mehrstufig bis zur obersten Ebene. Die oberste Ebene kann bereits nach der ersten oder erst nach der dritten Stufe erreicht sein.
Beispieldatei: https://www.herber.de/bbs/user/169603.xlsx
In der Beispieldatei findet ihr ein vereinfachtes Beispiel der Daten. In den Blättern "Verwendung 1" bis "... 3" sind die vorliegenden Daten. Im Blatt "Auswertung" habe ich mal manuell mit Filter-Formeln erstellt, wie ich mir das vorstelle. Aktuell erstelle ich für jede Komponente wieder eine neue Filterformel.
Meine Wunschlösung wäre, z.B. in Spalte E gleich ein ganzes Array als Suchkriterium anzugeben, also so:
=FILTER('Verwendung 2'!A:A;'Verwendung 2'!B:B=Auswertung!C:C)
klar, dass das nicht geht. Aber geht es irgendwie anders?
Mit VSTAPELN ließen sich mehrere FILTER-Funktionen übereinanderstapeln. Nur muss die Formel dann mühsam zusammengebastelt werden:
=VSTAPELN(FILTER('Verwendung 2'!A:A;'Verwendung 2'!B:B=Auswertung!C1);FILTER('Verwendung 2'!A:A;'Verwendung 2'!B:B=Auswertung!C2);...)
Unabhängig davon, dass das sehr mühsam zu erstellen wäre, gibt die Formel einen #KALK-Fehler aus, wenn eine der Filter-Funktionen kein Ergebnis liefert und wäre somit unbrauchbar
Einen alternativen Ansatz habe ich auf Blatt "Auswertung 2" dargestellt. Dabei zähle ich zunächst die Verwendungen der Komponenten (Spalten D und H). Der Plan wäre, daraus den Zeilenindex für jede Filterfunktion in den Spalten F und J zu generieren, wobei mir hier noch die zündende Idee für eine Formel fehlt. Gebe ich hier noch ein passendes Schlagwort für die jetzt leeren Zellen aus, könnte ich mittels VBA die Inhalte dieser Bereiche löschen, um einen Überlauf zu vermeiden. Bei einem ersten Versuch spuckt VBA allerdings einen Fehler aus, wenn Zellen mit Überlauf-Fehler abgefragt werden.
Ich bin offen für komplett andere Vorschläge. Ohne VBA wäre mir allerdings sehr recht. Da fehlt mir einfach die Routine...
Vielen Dank schon mal für Eure Hilfe!
Viele Grüße
Fabian
Anzeige