Dividir células por palavras maiúsculas e minúsculas no excel

1

Eu tenho um arquivo CSV com contatos que quero importar em uma lista de contatos on-line.

Infelizmente, o arquivo CSV tem uma única coluna para o nome completo e não diferencia as colunas "Nome" e "Sobrenome", que eu preciso. Eu queria saber se havia uma função do Excel para fazer a divisão (ou qualquer outra sugestão, tendo em conta que eu sou um desenvolvedor c #, mas eu não sei scripting Excel VB).

A boa notícia é que a coluna "Nome completo" sempre começa com o Sobrenome em maiúscula, seguido pelo primeiro nome no caso camelo, com o sobrenome contendo possivelmente um apóstrofo e tanto o primeiro quanto o último nome podem contém várias palavras. Seguem alguns exemplos:

1) LASTNAME Firsname; Other data; ... 

2) LASTNAME LASTNAME Firsname; Other data; ... 

3) LASTNAME' LASTNAME Firsname; Other data; ... 

4) LASTNAME' LASTNAME LASTNAME Firsname Firstname; Other data; ... 

Qual eu preciso transformar em:

1) Lastname; Firsname; Other data; ... 

2) Lastname Lastname; Firsname; Other data; ... 

3) Lastname' Lastname; Firsname; Other data; ... 

4) Lastname' Lastname Lastname; Firsname Firstname; Other data; ...

Obrigado pela sua ajuda.

    
por user3420936 13.03.2018 / 12:20

1 resposta

0

Suponho que você importou o arquivo CSV e a lista de nomes está na coluna A.

Esta fórmula cria uma coluna "auxiliar" contendo a posição da última letra do primeiro nome:

=MATCH(1,(CODE(MID(A2,ROW(A$1:A$50),1))>96)*(CODE(MID(A2,ROW(A$1:A$50),1))<123),0)-3

É uma fórmula de matriz e deve ser digitada com CTRL Deslocar Enter em vez de apenas Enter . Se inserida corretamente, a fórmula será cercada por chaves na barra de fórmulas. Esta fórmula foi preenchida de B2 na tabela abaixo.

Comofunciona:MID()criaumamatrizdetodasasletrasdonome(até50letras).ROW()éusadoparagerarumalistadenúmerosde1a50.Portanto,sealgumdeseusnomespudersermaiorquede50caracteres,vocêdeveráaumentarotermoA$50conformenecessário./p>

CODE()converteamatrizdeletrasemseuscódigosASCII.Ascomparações>96e<123verificamletrasmaiúsculasASCII,enquantoconvertemasmatrizesemvaloresTrue/FalsecomTrueparaqualquerletraminúscula.

Amultiplicaçãorealizaoequivalenteaum%lógicoAND()econverteosvaloresTrue/Falseem1e0.Finalmente,MATCH()encontraaposiçãodoprimeiro1nessamatriz,queéaposiçãodaprimeiraletraminúsculanonome.Asubtração3identificaaúltimaletradoprimeironome.

Agora,usandoacolunaauxiliar,ossobrenomespodemserlistadosnacolunaCcom:

=PROPER(LEFT(A2,B2))

IssopegaapartemaiúsculadacolunaAeaconvertenoqueoExcelchamadecaso"apropriado", o que parece ser o mesmo que o caso "camel".

Os primeiros nomes são listados na coluna D com:

=RIGHT(A2,LEN(A2)-B2-1)

    
por 13.03.2018 / 15:12