Combinando as duas primeiras letras do nome e as duas primeiras letras do sobrenome

Combinando as duas primeiras letras do nome e as duas primeiras letras do sobrenome

Eu tenho uma planilha de nomes de usuário.

O nome e o sobrenome estão na mesma célula da coluna A.

Existe uma fórmula que irá concatenar as duas primeiras letras do nome (primeira palavra) e as duas primeiras letras do sobrenome (segunda palavra)?

Por exemplo John Doe, deveria se tornar JoDo.

tentei

=LEFT(A1)&MID(A1,IFERROR(FIND(" ",A1),LEN(A1))+1,IFERROR(FIND(" ",SUBSTITUTE(A1," ","",1)),LEN(A1))-IFERROR(FIND(" ",A1),LEN(A1)))

mas isso me dá JoDoecomo resultado.

Responder1

Sim; supondo que cada pessoa tenha apenas um nome e um sobrenome, e sempre separados por um espaço, você pode usar o seguinte:

=LEFT(A1,2)&MID(A1,SEARCH(" ",A1)+1,2)

Eu só poderia basear esta resposta nessas suposições, pois é tudo o que você forneceu.

Ou se você quiser que um espaço ainda seja incluído:

=LEFT(A1,2)&" "&MID(A1,SEARCH(" ",A1)+1,2)

Responder2

E para completar, aqui está uma solução que retornará os dois primeiros caracteres do primeiro nome e os dois primeiros caracteres do sobrenome,mastambém é responsável por nomes do meio.

=LEFT(A1,2)&LEFT(MID(A1,FIND("~~~~~",SUBSTITUTE(A1," ","~~~~~",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))+1,LEN(A1)),2)

insira a descrição da imagem aqui

Graças a@Kyle para a parte principal da fórmula

Responder3

Essa é outra maneira...

Captura de tela da planilha

  • Um nome
  • B-=CONCATENATE(LEFT(A1,2),LEFT(RIGHT(A1,(LEN(A1)-FIND(" ",A1))),2))

Responder4

Baseado emesta resposta, aqui está uma solução elegante que funciona com qualquer número de nomes do meio:

=LEFT(A1,2)&LEFT(TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",LEN(A1))),LEN(A1))),2)

Explicação:

SUBSTITUTE(A1, " ", REPT(" ",LEN(A1)))substitui o(s) espaço(s) entre palavras por espaços iguais em número ao comprimento da string inteira. Usar o comprimento da string em vez de um número arbitrariamente grande garante que a fórmula funcione para qualquer string de comprimento e significa que o faz de forma eficiente.

RIGHT(space_expanded_string, LEN(A1))extrai a palavra mais à direita precedida por vários espaços. *

TRIM(space_prepended_rightmost_word)extrai a palavra mais à direita.

LEFT(rightmost_word, 2)extrai os dois primeiros caracteres da palavra mais à direita (sobrenome).


*Advertência: se for possível que um nome de usuário contenha espaços à direita, você precisará substituir o primeiro argumento de SUBSTITUTE(), ou seja A1, por TRIM(A1). Espaços iniciais e vários espaços consecutivos entre palavras são tratados corretamente apenas com A1.


Consertando sua tentativa

Olhando mais de perto sua tentativa de solução, parece que você estava muito próximo de uma fórmula funcional para concatenar as duas primeiras letras da primeira palavra (ou seja, o primeiro nome) e as duas primeiras letras dosegundopalavra se ela existisse.

Observe que se um nome de usuário contivesse nomes do meio, a fórmula corrigida capturaria incorretamente as duas primeiras letras do primeiro nome do meio em vez do sobrenome (assumindo que sua intenção é realmente extraí-las do sobrenome).

Além disso, se todos os nomes de usuário consistirem apenas em um nome ou em um nome e um sobrenome, a fórmula será desnecessariamente complicada e poderá ser simplificada.


Para ver como funciona a fórmula e assim corrigi-la, é mais fácil se ela for embelezada, assim:

=
LEFT(A1,2) &
MID(
  A1,
  IFERROR(FIND(" ",A1), LEN(A1)) + 1,
  IFERROR(
    FIND(" ", SUBSTITUTE(A1," ","",1)),
    LEN(A1)
  )
  - IFERROR(FIND(" ",A1), LEN(A1))
)


Para entender como funciona, primeiro veja o que acontece quando A1não contém espaços (ou seja, contém apenas um único nome). Todas as IFERROR()funções são avaliadas para seus segundos argumentos, pois FIND()retornam um #VALUE!erro se a string de pesquisa não for encontrada na string de destino:

=
LEFT(A1,2) &
MID(
  A1,
  LEN(A1) + 1,
  LEN(A1)
  -LEN(A1)
)

O terceiro argumento de MID()é avaliado como zero, portanto, a saída da função ""e o resultado da fórmula são os dois primeiros caracteres do nome único.


Agora observe quando há exatamente dois nomes (ou seja, há exatamente um espaço). A primeira e a terceira IFERROR()funções são avaliadas para seus primeiros argumentos, mas a segunda é avaliada para seu segundo argumento, pois FIND(" ", SUBSTITUTE(A1," ","",1))está tentando encontrar outro espaço após remover o primeiro e único:

=
LEFT(A1,2) &
MID(
  A1,
  FIND(" ",A1) + 1,
  LEN(A1)
  - FIND(" ",A1)
)

Claramente, MID()retorna a segunda palavra (ou seja, o sobrenome) em sua totalidade, e o resultado da fórmula são os dois primeiros caracteres do primeiro nome seguidos portodosos caracteres do sobrenome.


Para completar, também veremos o caso em que há pelo menos três nomes, embora deva ser bastante óbvio agora como corrigir a fórmula. Desta vez, todas as IFERROR()funções avaliam seus primeiros argumentos:

=
LEFT(A1,2) &
MID(
  A1,
  FIND(" ",A1) + 1,
  FIND(" ", SUBSTITUTE(A1," ","",1))
  - FIND(" ",A1)
)

É um pouco menos claro do que no caso anterior, mas MID()retorna exatamente a totalidadesegundopalavra (ou seja, primeiro nome do meio). Assim, o resultado da fórmula são os dois primeiros caracteres do primeiro nome seguidos por todos os caracteres do primeiro nome do meio.


Obviamente, a correção é usar LEFT()para obter os dois primeiros caracteres da MID()saída:

=
LEFT(A1,2) &
LEFT(
  MID(
    A1,
    IFERROR(FIND(" ",A1), LEN(A1)) + 1,
    IFERROR(
      FIND(" ", SUBSTITUTE(A1," ","",1)),
      LEN(A1)
    )
    - IFERROR(FIND(" ",A1), LEN(A1))
  ),
  2
)


A simplificação que mencionei acima é substituir LEFT(MID(…,…,…), 2)por MID(…,…,2):

=
LEFT(A1,2) &
MID(
  A1,
  IFERROR(FIND(" ",A1), LEN(A1)) + 1,
  2
)

ou em uma linha:

=LEFT(A1,2)&MID(A1,IFERROR(FIND(" ",A1),LEN(A1))+1,2)

Isto é essencialmenteA solução de PeterHmodificado para funcionar também com nomes únicos (nesse caso, o resultado são apenas os dois primeiros caracteres do nome).


Observação:As fórmulas embelezadas realmente funcionam se inseridas.

informação relacionada