
Zusammenfassung
Um mehrere Übereinstimmungen mit separaten Zellen in separaten Spalten zu extrahieren, können Sie eine Array-Formel verwenden, die auf INDEX und SMALL basiert. In dem gezeigten Beispiel lautet die Formel in F5:
(=IFERROR(INDEX(names,SMALL(IF(groups=$E5,ROW(names)-MIN(ROW(names))+1),COLUMNS($E$5:E5))),""))
Dies ist eine Array-Formel und muss mit Strg + Umschalt + Eingabetaste eingegeben werden.
Nachdem Sie die Formel in die erste Zelle eingegeben haben, ziehen Sie sie nach unten und quer, um die anderen Zellen auszufüllen.
Erläuterung
Hinweis: Diese Formel verwendet zwei benannte Bereiche: "Namen" bezieht sich auf C5: C11 und "Gruppen" beziehen sich auf B5: B11. Diese Namen sind auch im obigen Screenshot definiert.
Der Kern dieser Formel lautet: Wir verwenden die SMALL-Funktion, um eine Zeilennummer zu generieren, die einer "n-ten Übereinstimmung" entspricht. Sobald wir die Zeilennummer haben, übergeben wir sie einfach an die INDEX-Funktionsfunktion, die den Wert in dieser Zeile zurückgibt.
Der Trick ist, dass SMALL mit einem Array arbeitet, das von IF in diesem Bit dynamisch erstellt wird:
IF(groups=$E5,ROW(names)-MIN(ROW(names))+1)
Dieses Snippet testet den benannten Bereich "Gruppen" auf den Wert in E5. Wenn gefunden, wird eine Zeilennummer aus einem Array relativer Zeilennummern zurückgegeben, die erstellt wurden mit:
ROW(names)-MIN(ROW(names))+1
Das Endergebnis ist ein Array, das Zahlen enthält, bei denen eine Übereinstimmung vorliegt, und FALSE, bei denen nicht:
(1; FALSE; FALSE; FALSE; FALSE; 6; FALSE)
Dieses Array geht in SMALL. Der k-Wert für SMALL (n-te) stammt aus einem wachsenden Bereich:
COLUMNS($E$5:E5)
Beim Kopieren über die Ergebnistabelle wird der Bereich erweitert, wodurch k (n-te) erhöht wird. Die SMALL-Funktion gibt jede übereinstimmende Zeilennummer zurück, die der INDEX-Funktion als row_num mit dem benannten Bereich "names" als Array übergeben wird.
Fehler behandeln
Wenn COLUMNS einen Wert für k zurückgibt, der nicht existiert, gibt SMALL einen # NUM-Fehler aus. Dies geschieht, nachdem alle Übereinstimmungen stattgefunden haben. Um den Fehler zu unterdrücken, schließen wir die Formel in die IFERROR-Funktion ein, um Fehler abzufangen und eine leere Zeichenfolge ("") zurückzugeben.