Como você divide um nome para obter o primeiro nome e sobrenome?

1

Eu tenho uma coluna que contém uma lista de nomes, eu quero duas outras colunas para conter funções que extraem o primeiro e último nome. Até agora eu tenho isso

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

Isso funciona para nomes no formato "First Last", mas não funciona quando há informações extras, como "Mr. First Last".

Existe uma maneira melhor de fazer isso?

    
por Bob 21.07.2009 / 01:57

9 respostas

7

Não há uma maneira infalível de fazê-lo, mesmo ignorando títulos e sufixos e outras coisas. Considere os dois nomes a seguir:

Edward Van Halen
David Lee Roth

Os sobrenomes são "Van Halen" e "Roth", mas não há uma maneira algorítmica de diferenciar.

    
por 21.07.2009 / 05:20
7

Provavelmente melhor para o StackOverflow, mas não há uma maneira fácil em geral. Você pode ter uma lista de prefixos e sufixos permitidos para melhorar seu algoritmo. Mas considere ...

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

... dividir apenas espaços nunca será totalmente correto.

    
por 21.07.2009 / 02:04
3

Tente também pensar em culturas diferentes.

Apenas um exemplo do holandês: nome completo "Johannes Ernestus Maria van den Brink" divide-se em primeiro nome "Johannes", nomes do meio "Ernestus Maria", sobrenome "van den Brink" (que deve classificar em B!) .

A melhor solução (como em apenas 100% de trabalho) é ter campos de nome separados e um método de importação que permite ao usuário inserir as peças certas nos campos certos.

Então ... boa sorte ...

    
por 21.07.2009 / 09:36
1

E também falha para nomes com mais nomes ou mais sobrenomes. Você realmente deve armazená-los separadamente. Você também deve dividir seu formulário de entrada em partes específicas, como título, nome, sobrenome. Dessa forma, você pode manipular os possíveis espaços corretamente.

Você deve estender sua planilha com as colunas "primeiro nome" etc. e tentar converter automaticamente tantos nomes quanto possível, depois examinar os resultados e aplicar as correções conforme necessário, manualmente. Depois desse trabalho, seus dados serão muito mais fáceis de usar e ampliar.

    
por 21.07.2009 / 02:08
0

Você pode tentar substituir os valores de (Sr. Sra. Dr. Sra. Senhorita etc) por nada e tentar dividir os nomes dessa forma. Tente um teste para ver quantos espaços estão na célula para ver se há mais do que apenas 'First Last'. Nesse caso, substitua os valores acima por nada. Se você ainda tiver mais de um espaço, verifique as vírgulas e remova tudo, desde a vírgula até o final. Deve ajudar a limpar as células.

-JFV

    
por 21.07.2009 / 02:09
0

Outra opção é dividir a coluna do nome em partes lógicas.

Diga algo como Salutation , First name e Last name . Dessa forma, você pode criar um nome a partir das três colunas, opcionalmente trabalhando com o Salutation . Se você quiser, inclua um Middle initial .

Neste caso particular, é mais fácil construir a partir de partes do que tentar desconstruir.

    
por 21.07.2009 / 02:10
0

O Microsoft Outlook tem um bom algoritmo para isso. Você pode automatizar o Outlook, mas há um impacto definitivo no desempenho.

link

    
por 28.07.2010 / 22:13
0

Eu tive o mesmo problema. Não importa quantos nomes você tenha para uma pessoa, você pode tê-los em campos separados com muita facilidade. Copiei todos os nomes do excel para o bloco de notas. Então eu importei esse arquivo de texto para o excel e ao importar eu selecionei a opção delimitada e então eu selecionei o espaço delimitado.

Para obter melhores resultados, você pode limpar os dados removendo as iniciais, por exemplo, faisal s. tahir mude para faisal tahir.

Agora, quando você importar o arquivo de texto para o Excel como espaço delimitado, ele colocará automaticamente todos os nomes (primeiro, segundo, terceiro, quarto, quinto) em colunas diferentes.

    
por 18.12.2012 / 09:28
-1

Não há uma maneira infalível de fazê-lo, mesmo ignorando títulos e sufixos e outras coisas. Considere os dois nomes a seguir:

  • Edward Van Halen
  • David Lee Roth

Os sobrenomes são "Van Halen" e "Roth", mas não há uma maneira algorítmica de diferenciar.

Eu encontrei uma maneira de dizer a diferença entre estes, embora não a parte do prefixo / sufixo. Assumindo que o nome completo está em B2 e você quer apenas o sobrenome, a fórmula é

=IF(NOT(ISERROR(FIND(" ",B2,FIND(" ",B2)+1))),RIGHT(B2,LEN(B2)-FIND(" ",B2,FIND(" ",B2)+1)),RIGHT(B2,LEN(B2)-FIND(" ",B2)))
    
por 28.07.2010 / 19:57