› Excel e gli applicativi Microsoft Office › Trovare la prima minuscola in una cella
-
AutoreArticoli
-
Buongiorno a tutti!
Ogni tanto mi riaffaccio se sono in difficoltà
Vorrei sapere come faccio ad estrarre da una cella (tramite formula?) il cognome e le prime 3 lettere con punto del nome considerando che fino alla prima lettera del nome le lettere sono solo maiuscole. faccio un paio di esempi di quanto scritto nella cella A1 e del risultato che vorrei in A2:
PINCOPALLO Mario PINCOPALLO Mar.
VERDI Carola VERDI Car.
Avevo pensato di utilizzare la funzione Cerca e Codice.caratt>97 per trovare la prima minuscola (Ho un PC con caratteri ASCII) per poi spostarmi di 1 a dx e mettere il punto ma non ha funzionato
Preciso che posso tranquillamente usare anche delle celle di appoggio dove fare eventuali passaggi intermedi
Grazie a chi vorrà aiutarmi
il cognome e le prime 3 lettere con punto del nome considerando che fino alla prima lettera del nome le lettere sono solo maiuscole.
ad esempio:
=SINISTRA(A1;TROVA(" ";A1)+3) & "."ma non funziona se il cognome è composto da due parti p.e. "DE ROSSI Mario".
Ciao
=SINISTRA(A2;CONFRONTA(1;SE(ASS(CODICE(STRINGA.ESTRAI(A2;RIF.RIGA(INDIRETTO("1:"&LUNGHEZZA(A2)));1))-109,5)<=12,5;1);0)+1)&"."
penso tu lo debba confermare matriciale CTRL MAIUSCOLO INVIO
prova così
=SINISTRA(A2;CONFRONTA(1;INDICE(SE(ASS(CODICE(STRINGA.ESTRAI(A2;RIF.RIGA(INDIRETTO("1:"&LUNGHEZZA(A2)));1))-109,5)<=12,5;1);;);0)+1)&"."
dovrebbe funzionare senza confermare matriciale
Grazie Scossa della risposta!
Esatto. Per questo cercavo il modo di trovare la prima minuscola da sinistra e di fare il +1.
Siccome ho visto che le minuscole in ASCII sono comprese tra i valori 97 la "a" e 122 la "z" pensavo di utilizzare questi valori per cercare la prima minuscola >96&<123 a meno che non ci sia una funzione specifica a me sconosciuta
Gianfranco (ciao) mi ha anticipato, io stavo per postare questa:
=SINISTRA(A1;CONFRONTA(VERO;CODICE(STRINGA.ESTRAI(A1;RIF.COLONNA(1:100);1))>96;0)+1) & "."
matriciale da confermare con ctrl+maius+invio
ciao Scossa
prova ad inserire indice() nel confronta dovrebbe levare il matriciale
=SINISTRA(A2;CONFRONTA(VERO;INDICE(CODICE(STRINGA.ESTRAI(A2;RIF.COLONNA(1:100);1))>96;;);0)+1) & "."
Grazie Gianfranco e Scossa....
oooooops
mi sono scordato di dire che è un file xls (2000) che non ammette così tante nidificazioni (per questo avevo accennato a celle intermedie di appoggio), scusa!
Quindi: dove mi conviene spezzarla secondo te?
prova ad inserire indice() nel confronta dovrebbe levare il matriciale
Giusto

mi sono scordato di dire che è un file xls (2000) che non ammette così tante nidificazioni (per questo avevo accennato a celle intermedie di appoggio), scusa!
Ho provato a salvarlo come .xls e funziona senza problemi (excel 2003).
Riuscito, grazie!
Mi sembra perfetto!
Continuo a provarlo e poi spunto il "risolto"
ciao,
ammesso (Ma non concesso) che non ci siano nomi doppi, mettendo cognome e nome da A1 in giù, in B1 e trascini in basso
=SINISTRA(A1;CONFRONTA(FALSO;IDENTICO(STRINGA.ESTRAI(A1;RIF.RIGA($A$1:$A$50);1);MAIUSC(STRINGA.ESTRAI(A1;RIF.RIGA($A$1:$A$50);1)));0)-3)&" "&STRINGA.ESTRAI(A1;CONFRONTA(FALSO;IDENTICO(STRINGA.ESTRAI(A1;RIF.RIGA($A$1:$A$50);1);MAIUSC(STRINGA.ESTRAI(A1;RIF.RIGA($A$1:$A$50);1)));0)-1;3)&"."
-
AutoreArticoli
