Ho un foglio che ha una persona per riga: in una colonna i nomi, in un’altra colonna i cognomi. Devo formare i rispettivi indirizzi di posta elettronica, che sono nella forma nome.cognome@dominio
Utilizzo un metodo simile a How to reorder first name, last name in a text string? - #2 by oweng
Ricordati di attivare le espressioni regolari nelle formule da Opzioni > Calc > Calcola > Permetti espressioni regolari.
Poi dobbiamo controllare vari casi: persone con piú di un nome o cognome; cognome che cominci per “di”, “de” o simili (preposizioni e preposizioni articolate, per semplicità suppongo siano di 2 o 3 caratteri); rimozione di apostrofi (ed eventualmente trattini). Presumo anche che sia usato solo il primo nome e il primo cognome.
Se il nome è in colonna A, cognome in colonna B, il punto in C1 e il @dominio in D1 la formula sarà qualcosa come:
=SOSTITUISCI(MINUSC(CONCATENA(SE(CONTA.SE(A1;".+ .+");SINISTRA(A1;TROVA(" ";A1)-1);A1);$C$1;SE(CONTA.SE(B1;"^.. .+ .+");SINISTRA(B1;TROVA(" ";SOSTITUISCI(B1;"^(..) ";B1)-1+2));SE(CONTA.SE(B1;".+ .+");SOSTITUISCI(B1;" ";"");B1));$D$1));"'";"")
L’ho poi cambiato in questo per tenere conto dei cognomi che cominciano per Di/De/Al e poi hanno uno o due nomi:
=SOSTITUISCI(MINUSC(CONCATENA(SE(CONTA.SE(E2;".+ .+");SINISTRA(E2;TROVA(" ";E2)-1);E2);$G$1;SE(CONTA.SE(D2;"^.. .+ .+");SINISTRA(SOSTITUISCI(D2;" ";"";1);TROVA(" ";SOSTITUISCI(D2;" ";""; 1))-1);SE(CONTA.SE(D2;"^.. .+");SOSTITUISCI(D2;" ";"";1);SE(CONTA.SE(D2;".+ .+");SINISTRA(D2;TROVA(" ";D2)-1);D2)));$H$1));"'";"")