Aufgabe
Das längste Wort eines Satzes in einer Zelle (Zeichenzahl und Wort) soll bestimmt werden.
Der Satz steht in A1:
Das schönste am veganen Essen ist die Frikadelle danach.
Die Zeichenzahl in A2: 10
Das Wort in A3: Frikadelle
Lösung
in A2:
{=MAX(FINDEN("#";WECHSELN(A1&WIEDERHOLEN(" ";99);" ";"#";ZEILE(1:99)))-FINDEN("#";WECHSELN(" "&A1&WIEDERHOLEN(" ";99);" ";"#";ZEILE(1:99))))}
in A3:
{=TEIL(A1;MIN(WENN(ISTFEHLER(FINDEN(" ";TEIL(A1;ZEILE(1:999);A2);1)); ZEILE(1:999)));A2)}
Nur das Wort (ohne vorher die Länge zu bestimmen - A2 also aufgelöst):
{=TEIL(A1;MIN(WENN(ISTFEHLER(FINDEN(" ";TEIL(A1;ZEILE(1:999); MAX(FINDEN("#";WECHSELN(A1&WIEDERHOLEN(" ";99);" ";"#";ZEILE(1:99)))-FINDEN("#";WECHSELN(" "&A1&WIEDERHOLEN(" ";99);" ";"#";ZEILE(1:99)))));1));ZEILE(1:999))); MAX(FINDEN("#";WECHSELN(A1&WIEDERHOLEN(" ";99);" ";"#";ZEILE(1:99)))-FINDEN("#";WECHSELN(" "&A1&WIEDERHOLEN(" ";99);" ";"#";ZEILE(1:99)))))}
Alternativlösung mit Namen:
Name: x
Mit Bezug auf: =AUSWERTEN("{"&""""&WECHSELN($A$1;" ";""""&"."&"""")&""""&"}")
Das längste vorkommende Wort ist dann
{=MAX(LÄNGE(x))}
Zeichen lang und lautet:
{=INDEX(x;VERGLEICH(MAX(LÄNGE(x));LÄNGE(x);))}
(Frikadelle)
Erläuterung
Kommen mehrere gleich lange Wörter vor, wird das erste ausgegeben.
Bei der solo-Formel (ohne Namen) gibt es in alten Excel-Versionen (vor 2007) die Fehlermeldung "zu viele Verschachtelungsebenen".