Salve, vorrei, se possibile, capire come fare per avere in una cella, inizialmente vuota, riportati le iniziali dei due nomi contenuti in una cella e dargli un separatore tipo “_”.
Esempio:
Nella cella ho questo dato “Agrilus planipennisAplan_B3Lp374”, vorrei che come risultato in una nuova cella ci fosse “Agrilu_plan” cioè le prime sei lettere del primo nome e poi le prime quattro lettere del secondo nome separati da underscore.
Grazie in anticipo per quello che potrete fare.
Bruno
Bisogna combinare alcune funzioni di testo.
Per la prima parte del codice che vuoi creare basta la funzione SINISTRA, che seleziona i primi n caratteri a sinistra contenuti in una determinata cella.
Se quindi hai Agrilus planipennisAplan_B3Lp374 nella cella A3, ti posizionerai in una qualunque altra cella (ad es. la D3) e vi scriverai =SINISTRA(A3;6), dal momento che vuoi i primi sei caratteri.
Per la seconda parte (se non hai tutti generi zoologici di sette lettere, e quindi lo spazio sempre all’ottavo posto) occorre innanzitutto individuare la posizione dello spazio. Si fa con la funzione RICERCA, che ti conviene costruire con la creazione guidata, dopo esserti posizionato in una cella qualsiasi (ad es. la E3). RICERCA è composta da tre elementi: il testo da ricercare (nel tuo caso lo spazio), che va scritto tra virgolette; la cella in cui cercarlo /nel tuo caso abbiamo detto A3), e il carattere da cui far partire la ricerca (nel tuo caso 1, perché parti dall’inizio). La funzione completa risulterà dunque =RICERCA(" ";A3;1), e con il genere Agrilus ti darà il risultato 8.
A questo punto puoi ricavare il secondo pezzo del tuo codice con la funzione STRINGA.ESTRAI, che isola un pezzo a piacere dal contenuto di una cella. Ti conviene anche qui usare la creazione guidata, posizionandoti in una cella qualsiasi, ad es. la F3. Anche STRINGA.ESTRAI è composta da tre elementi: il testo da cui estrarre i caratteri (nel tuo caso la cella A3), il punto d’inizio e la lunghezza dell’estrazione. Per la lunghezza vuoi quattro caratteri, e quindi scriverai 4; il punto d’inizio è ovviamente il carattere successivo allo spazio dopo Agrilus, e quindi corrisponderà al risultato di RICERCA (situato nella cella E3, nell’esempio) aumentato di 1. Quindi la funzione risulterà =STRINGA.ESTRAI(A3;E3+1;4) e ti darà plan come risultato.
Ottenuti così i due pezzi, li metti insieme con la funzione CONCATENA: ti posizioni in una cella qualsiasi (ad es. la B3), e scrivi (o costruisci con la creazione guidata): =CONCATENA(D3;"_";F3), ottenendo il codice che desideri.
Le suddette funzioni si possono inserire l’una nell’altra; potrai quindi unificare RICERCA e STRINGA.ESTRAI scrivendo STRINGA.ESTRAI(A3;RICERCA(" ";A3;1)+1;4), e poi inserirle insieme a SINISTRA nella funzione CONCATENA, ottenendo la combinazione =CONCATENA(SINISTRA(A3;6);"_";STRINGA.ESTRAI(A3;RICERCA(" ";A3;1)+1;4)) che ti fornisce direttamente il codice senza riempire il foglio di spezzoni.
Ovviamente è comodo costruire a pezzi, come si è fatto qui sopra, il primo codice, e poi unificarli per impiegare la funzione combinata nella creazione dei codici successivi.
Anche:
=SINISTRA(A3;6)&"_"&STRINGA.ESTRAI(A3;RICERCA(" ";A3;1)+1;4)
Grazie mille. Erano giorni che impazzivo. Grazie di cuore
In merito a questo file su cui devo inserire molti dati, chiedevo se esiste una funzione che possa dare un numero progressivo che cambi se cambia il testo nella colonna precedente.
Esempio:
|Anoplo_glab|A001|
|Anoplo_glab|A002|
|Anoplo_glab|A003|
|Anoplo_glab|A004|
|Anoplo_glab|A005|
|Anoplo_glab|A006|
|Anthon_euge|A001|
|Anthon_euge|A002|
|Anthon_euge|A003|
|Anthon_euge|A004|
|Anthon_euge|A005|
|Anthon_euge|A006|
|Anthon_euge|A007|
|Anthon_euge|A008|
|Anthon_euge|A009|
|Anthon_euge|A010|
|Anthon_euge|A011|
|Anthon_euge|A012|
Ogni volta che cambia il contenuto del testo H1 (Anthon_euge) cambia la numerazione affianco cominciando da A001.
Grazie fin d’ora