
Ich habe eine Tabelle mit Benutzernamen.
Vor- und Nachname stehen in der gleichen Zelle der Spalte A
.
Gibt es eine Formel, die die ersten beiden Buchstaben des Vornamens (erstes Wort) und die ersten beiden Buchstaben des Nachnamens (zweites Wort) verbindet?
Beispielsweise John Doe
sollte aus werden JoDo
.
Ich habe es versucht
=LEFT(A1)&MID(A1,IFERROR(FIND(" ",A1),LEN(A1))+1,IFERROR(FIND(" ",SUBSTITUTE(A1," ","",1)),LEN(A1))-IFERROR(FIND(" ",A1),LEN(A1)))
aber das gibt mir JoDoe
als Ergebnis.
Antwort1
Ja. Vorausgesetzt, jede Person hat nur einen Vor- und Nachnamen und diese sind immer durch ein Leerzeichen getrennt, können Sie Folgendes verwenden:
=LEFT(A1,2)&MID(A1,SEARCH(" ",A1)+1,2)
Ich konnte meine Antwort nur auf diese Annahmen stützen, da dies alles ist, was Sie geliefert haben.
Oder wenn Sie möchten, dass ein Leerzeichen trotzdem einbezogen wird:
=LEFT(A1,2)&" "&MID(A1,SEARCH(" ",A1)+1,2)
Antwort2
Und um das Ganze abzurunden, hier ist eine Lösung, die die ersten beiden Zeichen des Vornamens und die ersten beiden Zeichen des Nachnamens zurückgibt,Aberberücksichtigt auch Zweitnamen.
=LEFT(A1,2)&LEFT(MID(A1,FIND("~~~~~",SUBSTITUTE(A1," ","~~~~~",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))+1,LEN(A1)),2)
Antwort3
Antwort4
Bezogen aufdiese Antwort, hier ist eine elegante Lösung, die mit einer beliebigen Anzahl von Zweitnamen funktioniert:
=LEFT(A1,2)&LEFT(TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",LEN(A1))),LEN(A1))),2)
Erläuterung:
SUBSTITUTE(A1, " ", REPT(" ",LEN(A1)))
ersetzt die Leerzeichen zwischen den Wörtern 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 beliebiger Länge funktioniert und bedeutet, dass sie effizient arbeitet.
RIGHT(space_expanded_string, LEN(A1))
extrahiert das am weitesten rechts stehende Wort, dem eine Reihe von Leerzeichen vorangestellt sind. *
TRIM(space_prepended_rightmost_word)
extrahiert das am weitesten rechts stehende Wort.
LEFT(rightmost_word, 2)
extrahiert die ersten beiden Zeichen des äußersten rechten Wortes (Nachname).
*Vorbehalt: Wenn ein Benutzername möglicherweise Leerzeichen am Ende enthält, müssen Sie das erste Argument von SUBSTITUTE()
, also A1
, durch ersetzen TRIM(A1)
. Führende Leerzeichen und mehrere aufeinanderfolgende Leerzeichen zwischen Wörtern werden mit nur korrekt behandelt A1
.
Beheben Sie Ihren Versuch
Wenn man sich Ihren Lösungsversuch genauer ansieht, sieht es so aus, als wären Sie einer funktionierenden Formel sehr nahe gekommen, um die ersten beiden Buchstaben des ersten Wortes (also des Vornamens) und die ersten beiden Buchstaben deszweiteWort, wenn es existierte.
Beachten Sie, dass, wenn ein Benutzername Zweitnamen enthält, die korrigierte Formel fälschlicherweise die ersten beiden Buchstaben aus dem ersten Zweitnamen und nicht aus dem Nachnamen extrahieren würde (vorausgesetzt, Sie möchten diese tatsächlich aus dem Nachnamen extrahieren).
Wenn alle Benutzernamen nur aus einem Vornamen oder einem Vornamen 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 korrigieren, ist es einfacher, sie zu verschönern, etwa so:
=
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 wir uns zunächst an, was passiert, wenn A1
keine Leerzeichen enthalten sind (d. h. nur ein einzelner Name). Alle IFERROR()
Funktionen werden nach ihrem zweiten Argument 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 MID()
wird als Null ausgewertet, sodass die Funktion ausgibt ""
und das Ergebnis der Formel die ersten beiden Zeichen des einzelnen Namens sind.
Betrachten wir nun, was passiert, wenn genau zwei Namen vorhanden sind (d. h. genau ein Leerzeichen). Die erste und dritte IFERROR()
Funktion werden zu ihrem ersten Argument ausgewertet, aber die zweite wird zu ihrem zweiten Argument ausgewertet, da FIND(" ", SUBSTITUTE(A1," ","",1))
sie versucht, ein weiteres Leerzeichen zu finden, nachdem das erste und einzige entfernt wurde:
=
LEFT(A1,2) &
MID(
A1,
FIND(" ",A1) + 1,
LEN(A1)
- FIND(" ",A1)
)
Gibt eindeutig MID()
das zweite Wort (also den Nachnamen) vollständig zurück, und das Ergebnis der Formel sind die ersten beiden Buchstaben des Vornamens, gefolgt vonalledie Zeichen des Nachnamens.
Der Vollständigkeit halber werden wir uns auch den Fall ansehen, in dem mindestens drei Namen vorhanden sind, obwohl es jetzt ziemlich offensichtlich sein sollte, wie man die Formel korrigiert. Dieses Mal werden alle IFERROR()
Funktionen zu ihren ersten Argumenten ausgewertet:
=
LEFT(A1,2) &
MID(
A1,
FIND(" ",A1) + 1,
FIND(" ", SUBSTITUTE(A1," ","",1))
- FIND(" ",A1)
)
Es ist etwas weniger klar als im vorherigen Fall, MID()
gibt aber genau die gesamtezweiteWort (also erster zweiter Vorname). Das Ergebnis der Formel sind also die ersten beiden Buchstaben des Vornamens, gefolgt von allen Buchstaben des ersten zweiten Vornamens.
Die Lösung besteht offensichtlich darin, Folgendes zu verwenden, LEFT()
um 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 besteht im Ersetzen 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 WesentlichenPeterHs Lösunggeändert, um auch mit einzelnen Namen zu funktionieren (in diesem Fall sind das Ergebnis nur die ersten beiden Zeichen des Namens).
Notiz:Die verschönerten Formeln funktionieren tatsächlich, wenn sie eingegeben werden.