Определение фамилий в Excel из целого ряда полных имен в различных форматах - PullRequest
0 голосов
/ 13 декабря 2018

Хорошо, у меня есть столбец полных имен, перечисленных в нескольких различных форматах:

lastName/firstName
lastName, firstName
firstName lastName
firstName middleInitial lastName
firstName middleName lastName

Мне нужно создать формулу, которая извлекает lastName из каждого из этих форматов.

Я предложил следующие частичные формулы:

  1. для определения "/", который работает, если в ячейке содержится "/" =IF(FIND("/",D2)>0,LEFT(D2,FIND("/",D2)-1), "Вместо отображения этого сообщения",если D2 не содержит '/', это приводит к страшному #VALUE! ")

  2. для определения", ", который СЛЕДУЕТ работать, если ячейка содержит", "=IF(FIND(",",D2)>0, LEFT(D2, FIND(",",D2)-1),"если D2 не содержит ',' это приводит к # ЗНАЧЕНИЮ!, а не к этому сообщению ")

Когда я пытаюсь вставить эти операторы if, я получаю только ошибку, а не получаюрезультат для типов "/" или "," и все еще не получает ничего, кроме ошибок для другой ситуации.Это была моя попытка:

=IF(FIND("/",D5)>0, LEFT(D5,FIND("/",D5)-1), IF(FIND(",",D5), LEFT(D5,(FIND(",",D5))-1), «Это должно быть закрытие первого вложенного« если », и это утверждение должно быть заполнено, если D5 не содержит« / »или«, », а вместо этого ...#значение!”)

Я также прибегнул к поиску решения для извлечения lastName, если lastName - только одно слово (это не сработает для Джона Сент-Пола, если я хочу, чтобы Сент-Пол заполнил):

IF(RIGHT(D5,LEN(D5)-FIND(" ",SUBSTITUTE(D2," "," ",LEN(D5)-LEN(SUBSTITUTE(D5," ",""))))))

Я не на 100% в этом, но он тратит больше времени на то, чтобы разглядывать это, я знаю, что могу понять, что он говорит, но в настоящее время я не могу заставить свою первоначальную функцию работать без сбоев, даже не добравшись до этого места.

Итак ...

Если у кого-то есть хорошая идея, как написать единую формулу, которая объединит все три из них, и если у кого-то есть хорошая идея об обработке редких моментов, у меня будетзначение из двух слов для lastName Я был бы очень благодарен!

Best,

Andy

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Мне нужно создать формулу, которая извлекает lastName из каждого из этих форматов.

Excel не предназначен для обработки текста, и есть лучшие способы, но он может достичь того, чтовы ищете, предполагая, что ваши примеры находятся в столбце A, начиная с A1, и вы скопируете следующее:

=IF(LEN(A1)>LEN(SUBSTITUTE(A1,"/","")),LEFT(A1,FIND("/",A1)-1),IF(LEN(A1)>LEN(SUBSTITUTE(A1,",","")),LEFT(A1,FIND(",",A1)-1),IF(LEN(A1)=1+LEN(SUBSTITUTE(A1," ","")),MID(A1,FIND(" ",A1)+1,LEN(A1)),MID(MID(A1,FIND(" ",A1)+2,LEN(A1)),FIND(" ",MID(A1,FIND(" ",A1)+1,LEN(A1))),LEN(A1)))))
0 голосов
/ 13 декабря 2018

Я предлагаю этот ответ в качестве альтернативы чисто основанному на Excel решению, которое будет очень многословным, сложным в обслуживании и подверженным ошибкам.Мы можем довольно легко решить вашу проблему с помощью регулярных выражений со следующим шаблоном:

^[^\s,\/]+(?: \S+)? |[,\/].*$

Этот шаблон будет соответствовать в каждой строке всему содержимому , кроме для фамилий.Затем, когда вы выполняете замену регулярных выражений, вы можете просто заменить совпадение пустой строкой.

Демо

Инструменты, которые могут легко справиться с этим, включаюттакие вещи, как Notepad ++ и большинство IDE, которые также поддерживают регулярные выражения.

...