Как Вы разделяете имя для получения имени и фамилии?

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

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

Это работает на имена в формате "First В последний раз", но он не работает, когда существует дополнительная информация, такая как "г-н First В последний раз".

Существует ли лучший способ пойти об этом?

1
задан 21.07.2009, 02:57

8 ответов

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

Edward Van Halen
David Lee Roth

Фамилиями являются "Van Halen" и "Roth", но нет никакого алгоритмического способа сказать различие.

7
ответ дан 12.12.2019, 07:38

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

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

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

7
ответ дан 12.12.2019, 07:38

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

Всего один пример с нидерландского языка: полное имя "Johannes Ernestus Maria van den Brink" разделяет на имя "Иоганнес", вторые имена "Ernestus Maria", фамилия "van den Brink" (который должен отсортировать под B!).

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

Так... удачи...

3
ответ дан 12.12.2019, 07:38

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

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

1
ответ дан 12.12.2019, 07:38

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

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

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

0
ответ дан 12.12.2019, 07:38

Можно попытаться заменить значения (г-н г-жа Доктор Г-жа мисс и т.д.) ни с чем и попытаться разделить имена тот путь. Попробуйте тест для наблюдения, сколько пробелов находится в ячейке, чтобы видеть, существуют ли больше, чем просто, 'Сначала Длятся'. Если так, ничем замените значения выше. Если у Вас все еще есть больше чем 1 пространство в нем, то проверьте на запятые и удалите все из запятой в конец. Это должно помочь очистить ячейки.

- JFV

0
ответ дан 12.12.2019, 07:38

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

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

0
ответ дан 12.12.2019, 07:38

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

  • Edward Van Halen
  • David Lee Roth

Фамилиями являются "Van Halen" и "Roth", но нет никакого алгоритмического способа сказать различие.

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

=IF(NOT(ISERROR(FIND(" ",B2,FIND(" ",B2)+1))),RIGHT(B2,LEN(B2)-FIND(" ",B2,FIND(" ",B2)+1)),RIGHT(B2,LEN(B2)-FIND(" ",B2)))
-1
ответ дан 12.12.2019, 07:38

Теги

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