Clever-Excel-Forum

Normale Version: Filter für Dropdownliste
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Ausgangslage:

Eine vorhandene Tabelle "Stammdaten" enthält: Vorname, Name, Geburtstag usw.
Eine Spalte in der Tabelle enthält die berechneten Werte des Alters, eine weitere Spalte: minderjährig / volljährig.
Die Tabelle enthält zusätzlich Name / Vorname der Erziehungsbrechtigten.
Aus praktischen Gründen werden alle Daten mittels Formular erfasst und in eine einzige Tabelle übertragen.

Ziel:
Erstellen einer Dropdownliste, die alle Namen / Vornamen der Stammdaten enthält.
Die Herausforderung:
a)
falls noch nicht volljährig, soll die Dropdownliste nur mit den Namen der Erziehungsberechtigten gefüllt werden,
falls nicht,
mit den Namen / Vornamen der Schüler*Innen.
b)
Zelle XY im worksheet wird vorher angekreuzt: volljährig? Ja / nein;
entsprechend soll die Dropdownliste gefüllt werden.

Trotz etlicher Versuche ist es mir als Einsteiger in Excel leider noch nicht gelungen diese Herausforderung zu meistern.
Bei Datenüberprüfung, ob Aggregat, Index usw. erhalte ich leider nur Fehlermeldungen!

Von daher wäre ich für Ratschläge und / oder Beispieldateien sehr dankbar.
Falls mit VBA Code, bitte mit entsprechender, für Einsteiger nachvollziehbarem Code-Kommentierung / -Erklärung.

Danke,
Grüße aus El Salvador, Peter

PS.:
Bitte nicht wundern, wenn ich auf Antworten nicht sofort reagiere.
(Ich bin ja völlig buff, wie schnell ich hier als Einteiger Antworten in diesem Forum erhalte: !muchas gracias!)
Oft fällt hier vor Ort das Internett für Tage aus oder ist so gedrosselt, dass ich keine Web-Seite aufrufen kann – sorry.
(Nervig, aber es gibt schlimmeres.)
Hallöchen,

Du könntest z.B. per Formel Daten filtern und an eine andere Stelle im Blatt übernehmen und das als Basis für die Datenüberprüfung nehmen
Hallo,

danke für deinen Hinweis.
Hatte bereits, glaube ich, inzwischen selber eine Lösung gefunden > AdvanceFilter > copy in anderen Bereich.
Sau-schnell! > bei 1000 Dummy-Zeilen und 25 column unterhalb einer Sekunde.

Was ich bislang gelernt habe:
Das definierte Suchkriterium wird im NamensManger unter "Suchkriterium" automatisch generiert.
Kleiner Nachteil:
Das Filterkriterium muss im AdvanceFilter bei einem geändertem Suchkriterium neu definiert werden.

Frage:

Wie lösche ich in VBA das Suchkriterium beziehungsweise ändere ich das Suchkriterium auf den neuen Wert? > statt "S" jetzt "E"
(Auch wenn ich bislang VBA vemeiden wollte, da keine Ahnung davon, unternehme ich gerade die ersten Gehversuche in VBA, weil ich scheinbar nicht darum herumkomme.
Auch deshalb aufwendig, da mit Sicherheit vieles für LibreOffice Calc später geändert werden muss.)

Ich habe es leider noch nicht geschafft, den Wert im Bereich "NamensManger" entsprechend per VBA Code zu ändern.

Für Lösungshinweise, möglichst mit Beispiel bin ich sehr dankbar.

Danke, Peter, El Salvador

PS.:

In dem Zusammenhang eine Frage, die nur bedingt zu Thema "Filter für Dropdownliste" passt.
Als Excel noch auf einer 750 KB Diskette ausgeliefert wurde - glaube 1983 - hat frau / man darauf geachtet, wenig "Platz" zu verschwenden.
Auch wenn der Speicherplatz heute eine untergeordnete Rolle spielt, bin ich als Wiedereinsteiger in Excel immer noch "geprägt" von der Vorstellung: keine Zelle zu viel zu vergeuden.
Bezogen auf "Filter für Dropdownliste" überlege ich:
Wenn Speicherplatz heute eine untergeordnete Rolle spielt, warum nicht gleich mehrere AdvancedFilter gleich von Anfang anlegen und in verschiedenen Breichen der Tabelle kopieren?
Wenn in Zelle xy das Suchkriterium "S" steht, nimm: "SuchkriteriumS, suche im Ergebnisbereich "S" und dort die Column z zur Erstellung der Dropdownliste
wenn in Zelle xy das Suchkriterium "E" steht, tome: "SuchkriteriumE, suche im Ergbenisbereich "E" und dort die Column z zur Erstellung der Dropdownliste
usw.
Frage:
Ist so eine Vorgehensweise sinnvoll oder "Verschwendung"?
Gibt es elegantere Lösungen?
Zu welcher Vorgehensnweise ratet Ihr mir?

Danke
Hallöchen,

Zitat:Ich habe es leider noch nicht geschafft, den Wert im Bereich "NamensManger" entsprechend per VBA Code zu ändern.

Musst Du auch nicht. Du änderst den Wert in der Zelle, hier C2.

[attachment=36547]

Zitat:Wenn Speicherplatz heute eine untergeordnete Rolle spielt,

da bin ich bestimmt nicht der Einzige, der das nicht so sieht.
Hallo,



per neuer Filter-Funktion sollte das auch gehen. siehe Beispiel
Hallöchen,

ich weiß nicht, ob meijn Ansatz mit dem Spezialfilter in LO so funktioniert, aber gibts "per neuer Filter-Funktion" dort auch

Zitat:Auch deshalb aufwendig, da mit Sicherheit vieles für LibreOffice Calc später geändert werden muss.)
Hallo Cadmus,

vielen Dank für deine Hinweise und deine Beispieltabelle.

Für mich ist es leider ziemlich schwer, die beiden Formeln nachzuvollziehen.
Im NamensManger die Formel:
=BEREICH.VERSCHIEBEN(Tabelle1!$F$2;0;0;ANZAHL2(Tabelle1!$F$2:$F$10);1)
und in der Zelle F2:
=WENN(D2="Nein";FILTER(A2:A5;B2:B5="X");FILTER(A2:A5;(B2:B5="x")+(B2:B5="")))

Ich habe versucht das ganze jetzt über eine Filterfunktion zu lösen > siehe Beispieldatei.

Was dann allerdings nicht mehr geht:
die Spalte mit der Filterberechnung in eine „intelligente“ Tabelle umgewandelt wird > „Überlauf“
(Trifft auch auf deine Beispieldatei zu.)

Falls du eine Lösung hast, wie ich die Dropdownliste so variabel gestallten kann, dass sie sich nach der Anzahl der Einträge anpasst, lass es mich wissen.
Ich habe noch keine Lösung gefunden wie die Syntax lauten muss,  damit der Bereich variabel ist.
Suche nach einer Formel die z. B.:
Bereich $A$2: $A$ [ANZAHL2(A:A)-1]
abdeckt. So funktioniert sie leider nicht.

Danke, Peter
Zitat:Falls du eine Lösung hast, wie ich die Dropdownliste so variabel gestallten kann, dass sie sich nach der Anzahl der Einträge anpasst, lass es mich wissen.


Genau das macht die Formel im Namensmanager.

Die Formel in F2 erstellt die Dropdownliste in Abhängigkeit von "Unter 18" Ja oder Nein.



Zitat:Was dann allerdings nicht mehr geht:
die Spalte mit der Filterberechnung in eine „intelligente“ Tabelle umgewandelt wird

Stimmt muss so bleiben. Intelligente Tabelle an dieser Stelle ist auch nicht nötig.
Hallo,

du bist ja schneller als die Feuerwehr. Danke.

bezüglich F2:
genau diese Formel habe ich überhaupt nicht verstanden.
=BEREICH.VERSCHIEBEN(Tabelle1!$F$2;0;0;ANZAHL2(Tabelle1!$F$2:$F$8);1)
Sorry, für Anfänger ist es wirklich so einfach, sich in die Syntax einzuarbeiten.

Ich hatte zunächst es mit deiner Beispieldatei probiert und 20 weitere Zeilen: Spalte A > Namen, Spalte B mit und ohne x gefüllt.
Da der Bereich für die gefilterte Liste bei dir aber nur bis Ax festgelegt ist, werden zusätzlich Einträge verständlicherweise nicht aufgezeigt.
Wenn ich den Bereich auf zum Beispiel bis zu A30 / F30 erweitere, tauchen dann in der Spalte F dort "0" auf, wenn weniger als 30 Zeilen gefüllt sind.

Danke, Peter
Wenn sich Leerzellen im zu filternden Bereich befinden, tauchen logischerrweise Nullwerte auf.

Du kannst die Ausgangsliste mit den Namen auch als intelligente Tabelle formatieren und arbeitest in den Filter-Formeln mit den Spaltennamen.

Und/Oder die Filter-Formel erweitern und leere Zellen ausschließen.

Zum Verständnis der einzelnen Funktionen vielleicht mal das ein oder andere Videotuorial auf Youtube anschauen.

https://www.youtube.com/results?search_q...erschieben&page&utm_source=opensearch
Seiten: 1 2