Il problema delle stringhe non strutturate in Excel
Quando importi dati da sistemi esterni, email o export CSV, Excel riceve spesso informazioni mescolate in un'unica cella: nomi completi con cognome e virgola, date scritte in formati arbitrari, codici con prefissi variabili. Separare questi elementi manualmente su centinaia di righe è impraticabile. Le funzioni avanzate di testo e data risolvono questo collo di bottiglia: ESTRAI, TROVA, DATAVALORE e TESTO permettono di scomporre, convertire e ricomporre stringhe in modo automatico, trasformando dati caotici in tabelle pulite pronte per analisi o pivot.
Questo articolo mostra come applicare queste funzioni in scenari reali: estrarre cognomi da stringhe "Cognome, Nome", validare e convertire date ricevute come testo, standardizzare formati numerici e ripulire campi da caratteri indesiderati. Ogni esempio usa l'interfaccia italiana di Excel e funzioni con nomi italiani.
Parsing di stringhe con ESTRAI e TROVA
Il parsing estrae porzioni specifiche di una stringa in base a delimitatori o posizioni fisse. ESTRAI richiede tre argomenti: il testo di partenza, la posizione iniziale del carattere da cui partire (1 = primo carattere) e il numero di caratteri da estrarre. TROVA restituisce la posizione numerica della prima occorrenza di un carattere o sottostringa all'interno del testo.
Combinando le due funzioni, puoi localizzare un delimitatore (es. virgola, spazio, trattino) e usare quella posizione per tagliare la stringa.
Esempio concreto: hai una colonna con nomi formattati "Rossi, Mario" e vuoi estrarre solo il cognome in una colonna separata.
In cella A2: Rossi, Mario
In cella B2 (cognome): =ESTRAI(A2; 1; TROVA(","; A2)-1)
Spiegazione:
TROVA(","; A2)restituisce 6 (la virgola è il sesto carattere)TROVA(","; A2)-1= 5 caratteri da estrarreESTRAI(A2; 1; 5)estrae dal primo carattere per 5 posizioni → "Rossi"
Per estrarre il nome (dopo la virgola e lo spazio):
In cella C2 (nome): =ESTRAI(A2; TROVA(","; A2)+2; LUNGHEZZA(A2))
Qui TROVA(","; A2)+2 salta virgola e spazio, LUNGHEZZA(A2) assicura di prendere tutti i caratteri rimanenti.
Se il delimitatore non è presente, TROVA restituisce un errore #VALORE!. Per gestirlo, avvolgi la formula in SE.ERRORE:
=SE.ERRORE(ESTRAI(A2; 1; TROVA(","; A2)-1); A2)
Così, se manca la virgola, restituisce l'intera stringa invece di un errore.
Conversione e validazione di date eterogenee
Excel memorizza le date come numeri seriali (1 gennaio 1900 = 1), ma quando importi dati da altre applicazioni o database, ricevi spesso stringhe di testo: "15/03/2024", "2024-03-15", "15-Mar-24". Se provi a fare calcoli su queste celle, Excel le tratta come testo e restituisce errori.
DATAVALORE converte una stringa di testo in formato data riconoscibile in numero seriale. Funziona se la stringa rispetta un formato data valido per le impostazioni locali italiane (gg/mm/aaaa, gg-mm-aaaa, ecc.).
Esempio: in A2 hai la stringa 15/03/2024 (importata da CSV, memorizzata come testo).
In B2: =DATAVALORE(A2)
Risultato: 45351 (numero seriale della data)
Per visualizzare la data in formato leggibile, applica il formato cella Data dalla scheda Home → gruppo Numero → elenco a discesa "Generale" → Data breve.
Per estrarre componenti singole (anno, mese, giorno), usa:
=ANNO(DATAVALORE(A2))→ 2024=MESE(DATAVALORE(A2))→ 3=GIORNO(DATAVALORE(A2))→ 15
Se la stringa non è in formato valido (es. "15-Mar-2024" con mese in inglese), DATAVALORE restituisce #VALORE!. In questi casi, devi prima sostituire o normalizzare la stringa con SOSTITUISCI o usare funzioni di parsing manuale.
Validazione prima della conversione: per evitare errori in batch, verifica che la cella contenga effettivamente una data valida:
=SE(VAL.NUMERO(DATAVALORE(A2)); DATAVALORE(A2); "Formato non valido")
VAL.NUMERO restituisce VERO se DATAVALORE ha successo, altrimenti la formula restituisce un messaggio di errore personalizzato.
Manipolazione di stringhe con CONCATENA e TESTO
CONCATENA (o l'operatore &) unisce più stringhe in una sola. TESTO formatta valori numerici o date secondo un codice di formato personalizzato, restituendo una stringa di testo.
Insieme, queste funzioni permettono di ricomporre campi strutturati partendo da dati frammentati e standardizzare l'output.
Esempio 1: hai cognome in A2 (Rossi), nome in B2 (Mario), e vuoi creare un campo "Cognome, Nome" in C2.
=CONCATENA(A2; ", "; B2)
oppure=A2 & ", " & B2
Risultato: Rossi, Mario
Esempio 2: hai una data seriale in A2 (45351) e vuoi formattarla come stringa "15/03/2024" per esportarla in un sistema esterno che richiede testo.
=TESTO(A2; "gg/mm/aaaa")
Risultato: 15/03/2024 (stringa di testo, non numero seriale)
Codici formato comuni per TESTO:
"gg/mm/aaaa"→ 15/03/2024"gg-mmm-aa"→ 15-mar-24"aaaa-mm-gg"→ 2024-03-15 (formato ISO)"0,00"→ formatta numeri con due decimali (es. 1234,56)"#.##0"→ formatta numeri con separatore migliaia (es. 1.234)
Esempio 3: componi un codice cliente da prefisso fisso + ID numerico formattato a 5 cifre:
In A2: 123
In B2: =CONCATENA("CLI-"; TESTO(A2; "00000"))
Risultato: CLI-00123
TESTO con formato "00000" aggiunge zeri iniziali fino a 5 cifre totali.
Ricerca e sostituzione con funzioni avanzate
SOSTITUISCI rimpiazza occorrenze di un testo con un altro. Sintassi: SOSTITUISCI(testo; testo_vecchio; testo_nuovo; [num_occorrenza]).
Se ometti num_occorrenza, sostituisce tutte le occorrenze. Se specifichi un numero, sostituisce solo quella occorrenza.
Esempio: rimuovi spazi doppi da una stringa.
In A2: Rossi Mario (due spazi tra cognome e nome)
In B2: =SOSTITUISCI(A2; " "; " ")
Risultato: Rossi Mario
Se ci sono spazi tripli o multipli, applica SOSTITUISCI in cascata o usa una formula ricorsiva con ANNIDA (più complesso). Per casi semplici, una sostituzione singola è sufficiente.
RICERCA e TROVA cercano una sottostringa e restituiscono la posizione. Differenza:
- TROVA è case-insensitive (non distingue maiuscole/minuscole)
- RICERCA è case-sensitive
Esempio: verifica se una cella contiene la parola "URGENTE" in maiuscolo.
=SE(VAL.NUMERO(RICERCA("URGENTE"; A2)); "Sì"; "No")
RICERCA restituisce un numero se trova la stringa esatta, altrimenti #VALORE!. VAL.NUMERO converte l'errore in FALSO, il numero in VERO.
Per standardizzare capitanazione (es. convertire tutto in maiuscolo prima di confrontare), usa MAIUSC:
=SE(VAL.NUMERO(TROVA("urgente"; MAIUSC(A2))); "Sì"; "No")
MAIUSC converte l'intera stringa in maiuscolo, poi TROVA cerca "urgente" (che diventa "URGENTE" dopo la conversione).
Esempio pratico combinato: ripulisci un campo email rimuovendo spazi iniziali/finali e convertendo in minuscolo.
=MINUSC(ANNULLA.SPAZI(A2))
ANNULLA.SPAZI rimuove spazi iniziali, finali e riduce spazi multipli interni a uno singolo. MINUSC converte tutto in minuscolo. Risultato: email standardizzata pronta per validazione.
Applicare queste funzioni in scenari reali
Un caso tipico: importi un export CSV da un gestionale con una colonna "Data_Ordine" in formato testo "15-03-2024" e una colonna "Cliente" con "Cognome, Nome". Vuoi:
- Estrarre cognome e nome in colonne separate
- Convertire la data in numero seriale per calcolare scadenze
- Creare un codice ordine con prefisso + data ISO + ID cliente
Formule:
- Cognome (B2):
=ESTRAI(A2; 1; TROVA(","; A2)-1) - Nome (C2):
=ESTRAI(A2; TROVA(","; A2)+2; LUNGHEZZA(A2)) - Data seriale (D2):
=DATAVALORE(SOSTITUISCI(E2; "-"; "/"))
(sostituisce trattini con slash per compatibilità DATAVALORE) - Data ISO (F2):
=TESTO(D2; "aaaa-mm-gg") - Codice ordine (G2):
=CONCATENA("ORD-"; F2; "-"; TESTO(H2; "0000"))
(H2 contiene ID numerico cliente)
Con queste formule, trasformi centinaia di righe disordinate in una tabella strutturata in pochi secondi.
Dove approfondire parsing e automazione in Excel
Queste tecniche fanno parte delle competenze avanzate per chi lavora con dati eterogenei: amministrazione, contabilità, HR, analisi commerciale. Padroneggiare ESTRAI, TROVA, DATAVALORE e TESTO riduce drasticamente il tempo dedicato a pulizia manuale e minimizza errori di trascrizione.
Se vuoi consolidare queste funzioni con esercizi pratici e casi d'uso reali, il portale Zero-G Office 365 offre video tutorial su Excel avanzato con interfaccia italiana, esempi scaricabili e attestati verificabili. I corsi BASE sono gratuiti, gli attestati costano 9 euro, i livelli intermedio e avanzato sono disponibili on-demand o live. Trovi tutto qui: https://zerog-office365.it/?utm_source=linkedin&utm_medium=blog&utm_campaign=corsi_gratis&utm_content=pmxwf4ib