Как разделить имя, чтобы получить имя и фамилию?

23269
Bob

У меня есть столбец, который содержит список имен, я хочу, чтобы два других столбца содержали функции, которые извлекают имя и фамилию. Пока у меня есть это

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

Это работает для имен в формате «First Last», но не работает, когда есть дополнительная информация, такая как «Mr. First Last».

Есть ли лучший способ сделать это?

1
Если вы можете разделить их, тогда используйте решение @ bandi. Если вы не можете, попробуйте заменить известные значения, которые вы не хотите, ничем (""). JFV 14 лет назад 0
К сожалению, это постоянная проблема с данными имен. Единственное реальное решение - это делать это вычислительно, а затем исправлять ошибки вручную или просто делать это вручную полностью. Поскольку только тот, кто действительно знает, что является частью имени и фамилии во всех случаях, - это тот, кто его набирает, всегда следует позаботиться о том, чтобы поле имени и фамилии было для пользователя. Stefan Thyberg 14 лет назад 4
Было бы полезно, если бы «Excel» был в заголовке этого вопроса. jtbandes 14 лет назад 1
Некоторые связанные вопросы по StackOverflow: http://is.gd/1G7zH http://is.gd/1G7Bg http://is.gd/1G7Cr http://is.gd/1G7D0 http://is.gd/ 1G7Dx (удачи!) peSHIr 14 лет назад 0

9 ответов на вопрос

7
JP Alioto

Вероятно, лучше всего подходит для StackOverflow, но в общем случае нет простого способа. Вы можете иметь список допустимых префиксов и суффиксов, чтобы сделать ваш алгоритм лучше. Но подумайте ...

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

... разделение на пустые места никогда не получится полностью правильным.

7
Graeme Perrow

Нет надежного способа сделать это, даже игнорируя заголовки, суффиксы и прочее. Рассмотрим следующие два имени:

Эдвард Ван Хален
Дэвид Ли Рот

Фамилии - «Ван Хален» и «Рот», но нет алгоритмического способа определить разницу.

"Falsehoods Programmers Believe About Names": http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/ coneslayer 13 лет назад 5
3
peSHIr

Также попробуйте думать о разных культурах.

Только один пример с голландского: полное имя «Йоханнес Эрнестус Мария ван ден Бринк» распадается на имя «Йоханнес», отчество «Эрнест Мария», фамилия «ван ден Бринк» (которое следует сортировать под буквой B!).

Лучшее решение (так как работает только на 100%) состоит в том, чтобы иметь отдельные поля имени и метод импорта, который позволяет пользователю вводить нужные части в правильные поля.

Удачи...

1
bandi

И это также не подходит для имен с большим количеством имен или фамилий. Вы действительно должны хранить их отдельно. Вы также должны разбить свою форму ввода на определенные части, такие как заголовок, имя, фамилия. Таким образом, вы можете правильно обрабатывать возможные пробелы.

Вы должны расширить свой лист столбцами «имя» и т. Д. И попытаться автоматически преобразовать как можно больше имен, а затем проверить результаты и применить исправления вручную. После этой работы ваши данные станут намного проще в использовании и расширении.

0
JFV

Вы можете попытаться заменить значения (Mr. Mrs. Dr. Ms. Miss и т. Д.) Ничем и попытаться разделить имена таким образом. Попробуйте проверить, сколько пробелов в ячейке, чтобы увидеть, есть ли больше, чем «Первый последний». Если это так, замените указанные выше значения ничем. Если у вас все еще есть больше чем 1 пробел, проверьте наличие запятых и удалите все от запятой до конца. Это должно помочь очистить клетки.

-JFV

0
random

Другой вариант - разбить столбец имени на логические части.

Скажи что - нибудь подобное Salutation, First nameи Last name. Таким образом, вы можете построить имя из трех столбцов, опционально работая с Salutation. Если хотите, добавьте Middle initialтакже.

В этом конкретном случае легче построить из частей, чем пытаться деконструировать.

0
dkusleika

Microsoft Outlook имеет довольно хороший алгоритм для этого. Вы можете автоматизировать Outlook, но есть определенный удар по производительности.

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

0
Faisal

У меня такая же проблема. Независимо от того, сколько имен у вас есть для человека, вы можете легко получить их в отдельных полях. Я скопировал все имена из Excel в блокнот. Затем я импортировал этот текстовый файл в Excel и во время импорта я выбрал опцию с разделителями, а затем я выбрал разделитель пробелов.

Чтобы получить лучшие результаты, вы можете очистить данные, удалив инициалы, например, faisal s. тахир поменяй на фейсал тахир.

Теперь, когда вы импортируете текстовый файл в Excel как разделитель пробелов, он автоматически поместит все имена (первый, второй, третий, четвертый, пятый) в разные столбцы.

Это хорошая идея, но она проваливается, если имя состоит из нескольких частей. Чтобы заимствовать из более раннего ответа: «Иоганн Эрнестус Мария ван ден Бринк» должен быть разделен на «« Иоганнес »» «Эрнест» «Мария» «ван ден Бринк» (или даже «Бринк, ван ден»). Ваш метод может исказить прошлой. Hennes 11 лет назад 1
Что ж, невозможно написать код или формулы, если у вас нет стандартного способа написания имен. Если вы разбиваете имя, вставляя пробел между именами, невозможно заставить компьютер обрабатывать пробелы в названии, названном вами как одно имя, а в других случаях обрабатывать его как отдельные имена. Это сработало для меня. Более того, было бы очень мало имен, в которых одно имя написано отдельно, поэтому, как только вы примените формулы, вы сможете работать с такими именами вручную. Faisal 11 лет назад 0
-1
user44388

Нет надежного способа сделать это, даже игнорируя заголовки, суффиксы и прочее. Рассмотрим следующие два имени:

  • Эдвард Ван Хален
  • Дэвид Ли Рот

Фамилии - «Ван Хален» и «Рот», но нет алгоритмического способа определить разницу.

Я нашел способ определить разницу между ними, но не в части префикса / суффикса. Предполагая, что полное имя находится в B2, и вам нужна только фамилия, формула

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

Похожие вопросы