Basierend auf dieser Antwort ist hier eine elegante Lösung, die mit einer beliebigen Anzahl von zweiten Vornamen funktioniert:
=LEFT(A1,2)&LEFT(TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",LEN(A1))),LEN(A1))),2)
Erläuterung:
SUBSTITUTE(A1, " ", REPT(" ",LEN(A1)))
Ersetzt die Zwischenworträume durch Leerzeichen, deren Anzahl der Länge der gesamten Zeichenfolge entspricht. Die Verwendung der Zeichenfolgenlänge anstelle einer beliebig großen Zahl garantiert, dass die Formel für Zeichenfolgen mit beliebiger Länge funktioniert, und bedeutet, dass dies effizient funktioniert.
RIGHT(space_expanded_string, LEN(A1))
extrahiert das Wort ganz rechts, dem eine Reihe von Leerzeichen vorangestellt ist. * *
TRIM(space_prepended_rightmost_word)
extrahiert das Wort ganz rechts.
LEFT(rightmost_word, 2)
extrahiert die ersten beiden Zeichen des am weitesten rechts stehenden Wortes (Nachname).
* Vorsichtsmaßnahme: Wenn ein Benutzername nachgestellte Leerzeichen enthalten kann, müssen Sie das erste Argument von SUBSTITUTE()
, dh A1
, durch ersetzen TRIM(A1)
. Führende Leerzeichen und mehrere aufeinanderfolgende Leerzeichen zwischen Wörtern werden nur mit korrekt behandelt A1
.
Ihren Versuch korrigieren
Wenn Sie sich Ihren Lösungsversuch genauer ansehen, scheinen Sie einer Arbeitsformel sehr nahe zu sein, um die ersten beiden Buchstaben des ersten Wortes (dh den Vornamen) und die ersten beiden Buchstaben des zweiten Wortes, falls vorhanden, zu verketten .
Beachten Sie, dass, wenn ein Benutzername Zweitnamen enthalten würde, die korrigierte Formel die ersten beiden Buchstaben fälschlicherweise aus dem ersten zweiten Vornamen anstelle des Nachnamens abrufen würde (vorausgesetzt, Sie beabsichtigen tatsächlich, sie aus dem Nachnamen zu extrahieren).
Wenn alle Benutzernamen nur aus einem Vornamen oder einem Vor- und einem Nachnamen bestehen, ist die Formel unnötig kompliziert und kann vereinfacht werden.
Um zu sehen, wie die Formel funktioniert, und sie so zu beheben, ist es einfacher, wenn sie wie folgt verschönert wird:
=
LEFT(A1,2) &
MID(
A1,
IFERROR(FIND(" ",A1), LEN(A1)) + 1,
IFERROR(
FIND(" ", SUBSTITUTE(A1," ","",1)),
LEN(A1)
)
- IFERROR(FIND(" ",A1), LEN(A1))
)
Um zu verstehen, wie es funktioniert, schauen Sie sich zunächst an, was passiert, wenn A1
keine Leerzeichen enthalten sind (dh es enthält nur einen einzigen Namen). Alle IFERROR()
Funktionen werden mit ihren zweiten Argumenten ausgewertet, da FIND()
ein #VALUE!
Fehler zurückgegeben wird, wenn die Suchzeichenfolge nicht in der Zielzeichenfolge gefunden wird:
=
LEFT(A1,2) &
MID(
A1,
LEN(A1) + 1,
LEN(A1)
-LEN(A1)
)
Das dritte Argument von wird MID()
mit Null ausgewertet, sodass die Funktionsausgaben ""
und das Formelergebnis die ersten beiden Zeichen des einzelnen Namens sind.
Schauen Sie sich nun an, wann es genau zwei Namen gibt (dh es gibt genau ein Leerzeichen). Die erste und die dritte IFERROR()
Funktion werden nach ihren ersten Argumenten ausgewertet, die zweite nach ihrem zweiten Argument, da FIND(" ", SUBSTITUTE(A1," ","",1))
versucht wird, nach dem Entfernen des ersten und einzigen ein weiteres Leerzeichen zu finden:
=
LEFT(A1,2) &
MID(
A1,
FIND(" ",A1) + 1,
LEN(A1)
- FIND(" ",A1)
)
Gibt eindeutig MID()
das zweite Wort (dh den Nachnamen) in seiner Gesamtheit zurück, und das Formelergebnis sind die ersten beiden Zeichen des Vornamens, gefolgt von allen Zeichen des Nachnamens.
Der Vollständigkeit halber werden wir uns auch den Fall ansehen, in dem es mindestens drei Namen gibt, obwohl es jetzt ziemlich offensichtlich sein sollte, wie die Formel zu korrigieren ist. Dieses Mal IFERROR()
bewerten alle Funktionen ihre ersten Argumente:
=
LEFT(A1,2) &
MID(
A1,
FIND(" ",A1) + 1,
FIND(" ", SUBSTITUTE(A1," ","",1))
- FIND(" ",A1)
)
Es ist etwas weniger klar als im vorherigen Fall, gibt jedoch MID()
genau das gesamte zweite Wort (dh den ersten zweiten Vornamen) zurück. Das Formelergebnis sind also die ersten beiden Zeichen des Vornamens, gefolgt von allen Zeichen des ersten zweiten Vornamens.
Offensichtlich besteht der Fix LEFT()
darin, die ersten beiden Zeichen der MID()
Ausgabe abzurufen:
=
LEFT(A1,2) &
LEFT(
MID(
A1,
IFERROR(FIND(" ",A1), LEN(A1)) + 1,
IFERROR(
FIND(" ", SUBSTITUTE(A1," ","",1)),
LEN(A1)
)
- IFERROR(FIND(" ",A1), LEN(A1))
),
2
)
Die oben erwähnte Vereinfachung soll ersetzt werden LEFT(MID(…,…,…), 2)
durch MID(…,…,2)
:
=
LEFT(A1,2) &
MID(
A1,
IFERROR(FIND(" ",A1), LEN(A1)) + 1,
2
)
oder in einer Zeile:
=LEFT(A1,2)&MID(A1,IFERROR(FIND(" ",A1),LEN(A1))+1,2)
Dies ist im Wesentlichen die Lösung von PeterH, die so modifiziert wurde, dass sie auch mit einzelnen Namen funktioniert (in diesem Fall sind das Ergebnis nur die ersten beiden Zeichen des Namens).
Hinweis: Die hübschen Formeln funktionieren tatsächlich, wenn sie eingegeben werden.