Remover texto de uma célula

2

Eu tenho um extrato AD com mais de 54000 nomes que geralmente estão nesse formato (dados de amostra):

Barnes, Bob B [WST]  
Santiago, Francis AB [AT]  
Chandler, Ronald  
Jefferson,  Katherine T [NT]  
Forrest,  Stan S  [WST]  
El Guerrero,  Annette BMD [AT]  
Lopez,  Todd TA  [CNT]  
Jackson, Lincoln F [NT]  
Nunez, Mattie Joey LC [WST]  
Moran,  David DA [AT]  
Gowan, Darryl V  
Hansen,  Rick AF  [NT]  
Lowe,  Denise DR  [WST]  
Butler,  Doug D  [AT]  
Kim, Erika  

Infelizmente, esse formato não é consistente em todos os dados. Às vezes, não haverá um MI ou pode haver até 3 MI's. Além disso, o [RGN] nem sempre está presente. E para piorar, há uma quantidade razoável de nomes que também têm espaços (ex. Da Vinci).

Eu preciso limpar esses nomes para que eles leiam:
LastName, FirstName

Eu tentei usar as funções LEFT, RIGHT e Text-to-Columns com o mínimo de sucesso. Até agora, o melhor resultado é o método de texto em colunas delimitado por um espaço e depois juntá-los usando (a1 & "" & b1). Isso funciona apenas para metade dos nomes e, atualmente, pretendo continuar unindo as células (a1 & b1 & c1 etc) e, em seguida, verificando manualmente os nomes para ter certeza de que estão corretos. Eu estou orando e esperando que alguém possa salvar a mim e aos meus olhos de fazer isso e tem uma idéia para eu tentar.

    
por Jay 09.08.2016 / 18:08

2 respostas

2

Eu uso o suplemento Find / Replace do RegEx para ter a função de planilha ativada por expressão regular.

Com isso, você pode remover facilmente o MI & RGN:

=RegExReplace(A1," [A-Z ]*(\[.*)*","",-1)

  1. Encontre o padrão " [A-Z ]*(\[.*)*"

    • corresponde ao espaço após o nome
    • [A-Z ]* corresponde às iniciais
    • (\[.*)* corresponde à região
  2. substitui por nada ""
  3. substitui apenas a última ocorrência -1

    
por 11.08.2016 / 19:52
0

Use uma expressão regular, ou algo parecido, para dividir essa sequência em três partes. Sobrenome, nome, extra.

Você provavelmente pode usar a mesma funcionalidade para dividir o extra em MI e RGN, supondo que você tenha uma pequena lista de RGN (regiões?).

Usar a vírgula como um delimitador para extrair o sobrenome da frente é fácil. Encontrar os primeiros nomes com espaços pode ser mais difícil. No entanto, assumindo que aqueles com 3 MIs têm iniciais únicas, você pode procurar pelo primeiro caractere único como a primeira inicial do meio. Qualquer coisa antes disso é o primeiro nome.

Faça o que fizer, faça em etapas. Retire os últimos nomes, pois isso é fácil. O restante é FirstName MI [RGN]. Se os parênteses existem onde há uma região, isso torna isso fácil também. Tire essas fotos.

Isso deixa o Nome MI. Eu trabalharia da direita para a esquerda. Se o último caractere for um espaço, solte-o. Se é um personagem, e o personagem que resta dele é um espaço, então é inicial. Puxe-o para fora e adicione-o à frente do campo de destino para MI. Repita até que haja uma string multicharacter. Este é o final do primeiro nome. Parabéns, você acabou de dividir tudo.

Outra pergunta: você pode voltar ao AD e reexportar e obter os campos individuais e não o nome de exibição? (powershell, Get-ADUser ... ) Seria MUITO mais fácil remontar o nome de exibição do que fazer o que acabei de listar.

    
por 09.08.2016 / 18:27