Remover texto de uma célula

Remover texto de uma célula

Eu tenho um extrato do AD com mais de 54.000 nomes que geralmente estão neste 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, este formato não é consistente em todos os dados. Às vezes, não haverá um IM ou poderá haver até 3 IM. Além disso, o [RGN] nem sempre está presente. E para piorar, há uma boa quantidade de nomes que também possuem espaços (ex. Da Vinci).

Preciso limpar esses nomes para que leiam:
Sobrenome, Nome

Tentei usar as funções LEFT, RIGHT e Text-to-Columns com mínimo sucesso. Até agora, o melhor resultado é o método Text-to-Columns delimitado por um espaço e depois unindo-os usando (a1&" "&b1). Isso funciona apenas para talvez metade dos nomes e, atualmente, pretendo continuar juntando células (a1, b1, c1, etc.) e, em seguida, verificar manualmente os nomes para ter certeza de que estão corretos. Estou rezando e esperando que alguém possa salvar a mim e aos meus olhos de fazer isso e tenha uma ideia para eu tentar.

Responder1

eu usoSuplemento Localizar/Substituir RegExpara ter a função de planilha habilitada para expressões regulares.

Com isso você pode remover facilmente MI e RGN:

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

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

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

insira a descrição da imagem aqui

Responder2

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

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

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

Faça o que fizer, faça-o em etapas. Retire os sobrenomes, pois é fácil. O restante é Nome MI [RGN]. Se existirem colchetes onde há uma região, isso também será fácil. Tire isso.

Isso deixa o PrimeiroNome MI. Eu trabalharia da direita para a esquerda. Se o último caractere for um espaço, descarte-o. Se for um caractere e o caractere restante for um espaço, então é uma inicial. Retire-o e adicione-o na frente do campo de destino para MI. Repita até que haja uma sequência de vários caracteres. Este é o fim do Nome. Parabéns, você terminou 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.

informação relacionada