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.)
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?
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.
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.
Cadmus
Folgende(r) 1 Nutzer sagt Danke an Cadmus für diesen Beitrag:1 Nutzer sagt Danke an Cadmus für diesen Beitrag 28 • peschiber
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.