Wie teilen Sie einen Namen auf, um Vorname und Nachname zu erhalten?

24903
Bob

Ich habe eine Spalte, die eine Liste mit Namen enthält. Zwei andere Spalten enthalten Funktionen, die den Vor- und Nachnamen extrahieren. Bisher habe ich das

FirstName: =LEFT(D3,FIND(" ",D3)) LastName: =RIGHT(D3,LEN(D3)-FIND(" ",D3)) 

Dies funktioniert für Namen im Format "First Last", jedoch nicht, wenn zusätzliche Informationen wie "Mr. First Last" vorhanden sind.

Gibt es einen besseren Weg, dies zu tun?

1
Wenn Sie sie trennen können, gehen Sie zur Lösung von @ bandi. Wenn Sie dies nicht tun können, ersetzen Sie bekannte Werte, die Sie nicht möchten, durch nichts (""). JFV vor 15 Jahren 346
Dies ist leider ein ständiges Problem mit Namensdaten. Die einzige wirkliche Lösung besteht darin, dies entweder rechnerisch durchzuführen und dann die Fehler manuell zu korrigieren oder einfach ganz von Hand auszuführen. Da der einzige, der wirklich weiß, was Teil des Vornamens und des Nachnamens ist, in allen Fällen derjenige ist, der ihn eintippt, sollte immer darauf geachtet werden, dass für den Benutzer ein Vor- und Nachname-Feld vorhanden ist. Stefan Thyberg vor 15 Jahren 350
Es wäre hilfreich, wenn "Excel" im Titel dieser Frage stehen würde. jtbandes vor 15 Jahren 347
Einige verwandte Fragen zu StackOverflow: http://is.gd/1G7zH http://is.gd/1G7Bg http://is.gd/1G7Cr http://is.gd/1G7D0 http://is.gd/ 1G7Dx (Viel Glück!) peSHIr vor 15 Jahren 346

9 Antworten auf die Frage

7
JP Alioto

Wahrscheinlich am besten für StackOverflow, aber im Allgemeinen gibt es keinen einfachen Weg. Sie können eine Liste zulässiger Präfixe und Suffixe haben, um den Algorithmus zu verbessern. Aber bedenke ...

Dr. Jack Johnson Smith, PhD Mr. Jim S. Van De Berg, Jr. 

... das Aufteilen auf nur Leerzeichen wird es nie ganz richtig machen.

7
Graeme Perrow

Es gibt keine narrensichere Methode, sogar Titel und Suffixe und so weiter zu ignorieren. Betrachten Sie die folgenden zwei Namen:

Edward Van Halen
David Lee Roth

Die Nachnamen sind "Van Halen" und "Roth", aber es gibt keine algorithmische Methode, um den Unterschied zu erkennen.

"Falsehoods Programmers Believe About Names": http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/ coneslayer vor 14 Jahren 351
3
peSHIr

Versuchen Sie auch, über verschiedene Kulturen nachzudenken.

Nur ein Beispiel aus dem Niederländischen: Der vollständige Name "Johannes Ernestus Maria van den Brink" teilt sich in Vornamen "Johannes", zweite Vornamen "Ernestus Maria", Nachname "van den Brink" (was sich unter B befinden sollte!) Auf.

Die beste Lösung (da nur zu 100% gearbeitet wird) ist, separate Namensfelder und eine Importmethode zu haben, mit der der Benutzer die richtigen Teile in die richtigen Felder eingeben kann.

Also viel Glück...

1
bandi

Und es schlägt auch für Namen mit mehr Vornamen oder mehr Nachnamen fehl. Sie sollten sie wirklich getrennt aufbewahren. Sie sollten Ihr Eingabeformular auch in bestimmte Teile wie Titel, Vornamen und Nachnamen aufteilen. Auf diese Weise können Sie mit den möglichen Leerzeichen korrekt umgehen.

Sie sollten Ihr Arbeitsblatt um Spalten mit "Vornamen" usw. erweitern und versuchen, so viele Namen wie möglich automatisch zu konvertieren. Überprüfen Sie dann die Ergebnisse und nehmen Sie bei Bedarf Korrekturen vor. Nach dieser Arbeit sind Ihre Daten viel einfacher zu verwenden und zu erweitern.

0
JFV

Sie können versuchen, die Werte von (Frau Dr. Fräulein usw.) durch nichts zu ersetzen und die Namen auf diese Weise zu teilen. Testen Sie einen Test, um zu sehen, wie viele Leerzeichen sich in der Zelle befinden, um zu sehen, ob es mehr als nur "First Last" gibt. Wenn ja, ersetzen Sie die obigen Werte durch nichts. Wenn Sie noch mehr als 1 Leerzeichen haben, suchen Sie nach Kommas und entfernen Sie alles aus dem Komma bis zum Ende. Es sollte helfen, die Zellen aufzuräumen.

-JFV

0
random

Eine andere Möglichkeit besteht darin, die Namensspalte in logische Teile aufzuteilen.

Sagen Sie etwas wie Salutation, First name, und Last name. Auf diese Weise können Sie einen Namen aus den drei Spalten erstellen und optional mit der Salutation. Wenn du willst, füge auch eine hinzu Middle initial.

In diesem Fall ist es einfacher, aus Teilen zu bauen, als zu versuchen, sie zu dekonstruieren.

0
dkusleika

Microsoft Outlook hat dafür einen ziemlich guten Algorithmus. Sie können Outlook automatisieren, es besteht jedoch ein eindeutiger Leistungseinbruch.

http://www.dailydoseofexcel.com/archives/2004/11/11/parse-names-with-outlook/

0
Faisal

I had the same problem. No matter how many names you have for a person you can have them in separate fields very easily. I copied all the names from excel to notepad. Then I imported that text file into excel and while importing i selected the option delimited and then i selected the space delimited.

In order to have better results you can clean data by removing initials e.g faisal s. tahir change it to faisal tahir.

Now when you import the text file into excel as space delimited then it will automatically put all names (first, second, third, fourth, fifth) into different columns.

Dies ist eine gute Idee, die jedoch fehlschlägt, wenn ein Name aus mehreren Teilen besteht. Um aus einer früheren Antwort zu leihen: "Johannes Ernestus Maria van den Brink" sollte sich in "" Johannes "" Ernestus "" Maria "" van den Brink "(oder sogar" Brink, van den ") aufspalten zuletzt. Hennes vor 11 Jahren 347
Es ist unmöglich, einen Code oder Formeln zu schreiben, wenn Sie keine Standardmethode zum Schreiben von Namen haben. Wenn Sie einen Namen brechen, indem Sie ein Leerzeichen zwischen Namen einfügen, ist es nicht möglich, dem Computer mitzuteilen, Leerzeichen in dem von Ihnen angegebenen Namen als einen Namen zu behandeln. In anderen Fällen behandeln Sie ihn als separate Namen. Es hat für mich funktioniert. Außerdem gibt es nur sehr wenige Namen, bei denen ein Name separat geschrieben wird. Wenn Sie also die Formeln angewendet haben, können Sie diese Namen manuell bearbeiten. Faisal vor 11 Jahren 346
-1
user44388

Es gibt keine narrensichere Methode, sogar Titel und Suffixe und so weiter zu ignorieren. Betrachten Sie die folgenden zwei Namen:

  • Edward Van Halen
  • David Lee Roth

Die Nachnamen sind "Van Halen" und "Roth", aber es gibt keine algorithmische Methode, um den Unterschied zu erkennen.

Ich habe einen Weg gefunden, den Unterschied zwischen diesen beiden zu unterscheiden, nicht jedoch dem Präfix / Suffix. Angenommen, der vollständige Name ist in B2 und Sie möchten nur den Nachnamen der Formel

=IF(NOT(ISERROR(FIND(" ",B2,FIND(" ",B2)+1))),RIGHT(B2,LEN(B2)-FIND(" ",B2,FIND(" ",B2)+1)),RIGHT(B2,LEN(B2)-FIND(" ",B2)))