
Generische Formel
(=INDEX(rng1,MATCH(MAX(LEN(rng1)*(rng2=criteria)),LEN(rng1)*(rng2=criteria),0)))
Zusammenfassung
Um die längste Zeichenfolge in einem Bereich mit Kriterien zu finden, können Sie eine Array-Formel verwenden, die auf INDEX, MATCH, LEN und MAX basiert. In dem gezeigten Beispiel lautet die Formel in F6:
(=INDEX(names,MATCH(MAX(LEN(names)*(class=F5)),LEN(names)*(class=F5),0)))
Wobei "Namen" der benannte Bereich C5: C14 und "Klasse" der benannte Bereich B5: B14 ist.
Hinweis: Dies ist eine Array-Formel und muss mit Strg + Umschalt + Eingabe eingegeben werden.
Erläuterung
Der Kern dieser Formel ist die MATCH-Funktion, mit der die Position der längsten Zeichenfolge anhand der angegebenen Kriterien ermittelt wird:
MATCH(MAX(LEN(names)*(class=F5)),LEN(names)*(class=F5),0)
Hinweis MATCH ist so eingerichtet, dass eine exakte Übereinstimmung durchgeführt wird, indem für den Übereinstimmungstyp Null angegeben wird. Für den Suchwert haben wir:
LEN(names)*(class=F5)
Die LEN-Funktion gibt ein Array von Ergebnissen (Längen) zurück, eines für jeden Namen in der Liste, wobei class = "A" aus Zelle F5:
(5;6;8;6;6;0;0;0;0;0)
Dadurch wird die gesamte Klasse B effektiv herausgefiltert, und die MAX-Funktion gibt dann den größten Wert 8 zurück.
Um ein Lookup-Array zu erstellen, verwenden wir denselben Ansatz:
LEN(names)*(class=F5)
Und erhalten Sie das gleiche Ergebnis:
(5;6;8;6;6;0;0;0;0;0)
Nach dem Ausführen von LEN und MAX haben wir eine MATCH-Formel mit folgenden Werten:
MATCH(8,(5;6;8;6;6;0;0;0;0;0),0))
MATCH gibt dann die Position 8 in der Liste 3 zurück, die wie folgt in INDEX eingespeist wird:
=INDEX(names,3)
Schließlich gibt INDEX pflichtbewusst den Wert an der 3. Position von Namen zurück , nämlich "Jonathan".