Der folgende Screenshot zeigt, wie Sie dies mithilfe einer dynamischen Liste von Werten für Ihre Dropdown-Listen tun.
Die erste Liste der Werte List Values 1
wird mit Formeln definiert, wobei die Auswahl aus den ersten beiden Dropdown-Listen verwendet wird. Diese Liste implementiert die in Ihrer Matrix dargestellte Logik. Wenn ich Ihren Text nicht richtig in Formeln übersetzt habe, passen Sie ihn bitte an.
Die zweite Liste der Werte List Values 2
erstellt eine dynamische, geordnete Liste der Werte von List Values 1
, wobei am Ende leere Werte eingefügt werden. Die Formeln in E14
und E18
sind:
=IFERROR(INDEX(E$5:E$8,AGGREGATE(15,6,(ROW(E$5:E$8)-ROW(E$4))/(E$5:E$8<>""),ROWS($E$14:$E14)),1),"") =IFERROR(INDEX(E$9:E$11,AGGREGATE(15,6,(ROW(E$9:E$11)-ROW(E$8))/(E$9:E$11<>""),ROWS($E$18:$E18)),1),"")
Schließlich erstellen zwei Formeln Arrays der nicht leeren Werte in List Values 2
und werden den Namen List_2
und zugewiesen List_3
, mit denen die Listenwerte für Dropdowns 2 und 3 festgelegt werden. Diese Formeln werden im Screenshot angezeigt.
Ich hoffe das hilft und viel Glück. ______________________________________________________________________________________
Wie es funktioniert: Die innere AGGREGATE()
Funktion oben macht das Gleiche SMALL()
wie Funktion (Funktion = 15), mit der Ausnahme, dass sie die Möglichkeit hat, Fehler zu ignorieren (Option = 6), und Array-Berechnungen ausführen kann, ohne dass dies erforderlich ist CTRLShiftEnter.
Das Array arbeitet es eingeschaltet ist (ROW(E$5:E$8)-ROW(E$4))/(E$5:E$8<>"")
, das das Array durch die Anordnung der unterteilten
True/False
Werten, bei denen der Bereich E5:E8
nicht leer ist: .
In arithmetischen Operationen mit logischen Werten, True
und False
werden auf 1 und 0 umgewandelt. Die Division gibt also das Array {#DIV/0!;2;3;#DIV/0!}
an und AGGREGATE()
ignoriert die Fehler und gibt die Zeilennummern an, die nicht leer sind: in dem oben gezeigten Fall.
Dieses Array wird dann als row_nums in a verwendet INDEX()
, von dem die nicht leeren Zeilen zurückgegeben werden E5:E8
. Gibt schließlich IFERROR()
ein Leerzeichen zurück, wenn INDEX()
zurückgegeben wird, #NUM!
wenn es weiter als die Anzahl der Werte in seiner Liste der Reihennummern gefüllt wird.
Die Formeln für die benannten Bereiche werden verwendet INDEX()
, um den letzten nicht leeren Wert in jeder Liste zurückzugeben. SUM()
zählt die Anzahl der nicht leeren Zellen im Bereich, und dies wird als Reihennummer für verwendet INDEX()
.