EXCEL - Extrair e substituir palavra por alfabeto

0

Eu tenho uma lista de nomes no excel de uma classe. Ele contém uma coluna "Nome completo". O nome completo tem 3 partes, viz: 1. Primeiro Nome (FN) 2. Nome do Meio (MN) 3. Apelido (SN)

por exemplo: Aashish Ajit Handa (FN) (MN) (SN)

Eu quero poder mudar o mesmo para Aashish A. Handa Ou seja, o nome do meio deve ser pesquisado e o primeiro alfabeto deve substituir o (MN). O nome do meio tem tamanho de caractere diferente.

    
por Akshay wadgaonkar 22.08.2016 / 14:59

2 respostas

1

Selecione os nomes que correspondem ao seu padrão e execute esta macro curta:

Sub NameFixer()
    Dim s As String, r As Range

    For Each r In Selection
        ary = Split(r.Text, " ")
        ary(1) = Left(ary(1), 1)
        r.Value = Join(ary, " ")
    Next r
End Sub

Antes:

edepois:

(Como não há verificação de erros, evite Selecionar células que não correspondem ao seu padrão)

    
por 22.08.2016 / 15:10
1

Uma maneira não-macro de fazer o mesmo problema é dividir os 3 nomes como uma fórmula e combiná-lo. Eu normalmente usaria o gerenciador de nomes para isso, mas também mostraria a fórmula estendida que não usa o nome manage. (Todos esses exemplos usarão a célula a1 como tendo um nome que é Nome (espaço) Nome (espaço) Formato de nome Etapa 1 obter o primeiro nome.

  1. Fname = + LEFT (Folha1! A1, FIND ("", Folha1! A1)) Isso procura o primeiro espaço e retorna tudo para a esquerda

  2. Lname = + RIGHT (Folha1! A1, LEN (Folha1! A1) -FIND ("", Folha1! A1,1 + LEN (Fname))) Isso retorna o sobrenome. Precisamos do primeiro e do último nome para marcar a resposta. Isso pressupõe que há apenas dois espaços e procura o segundo espaço fazendo uma descoberta que começa após o primeiro espaço.

  3. Mname = MID (Folha1! A1,1 + LEN (Fname), LEN (Folha1! A1) -LEN (Fname) -LEN (Lname)) Isso retorna o nome do meio completo usando o Fname e o Lname para colchetes.

para juntar tudo

  1. = (Fname & LEFT (MName, 1) & "." & Lname) O "." Após a esquerda (mname, 1) poderia ser "" se não quisesse o período.

Em uma única linha sem usar nomes,

  1. = ESQUERDA (A1, FIND ("", A1)) e ESQUERDA (MID (A1, FIND ("", A1) +1,1)) & "." & RIGHT (A1, LEN A1) -FIND ("", A1,1 + FIND ("", A1)))

Problemas com essa abordagem,

  • Sensível a problemas de estrutura de dados, coloque um iferror na frente com um "Erro de formato de nome", como
  • = + IFERROR (Fname & LEFT (MName, 1) & "" & Lname, "erro de formato de nome")

Também pode ser necessário fazer um substituto para substituir espaços duplos por espaços únicos.

  • Aname = substituto (a1, "", "")

O que pode ser necessário dependendo de quão boa é sua fonte de dados em estar exatamente seguindo o formato.

    
por 22.08.2016 / 16:39