www.valterborsato.it

La nuova funzione di matrice dinamica DIVIDI.TESTO

La Funzione DIVIDI.TESTO (TEXTSPLIT) di Excel suddivide una stringa di testo in base a un delimitatore specificato, distribuendo i risultati su più colonne e/o righe.
Il risultato dell'applicazione di questa funzione è una matrice dinamica che si espande automaticamente su più celle.
La funzione accetta fino a 6 argomenti, dei quali solo i primi due sono obbligatori.
Come spesso accade nelle nuove funzione di Excel, gli argomenti della funzione non sono stati tradotti e vengono proposti in lingua originale inglese.
Una particola applicazione della funzione DIVIDI.TESTO, è la possibilità di separare stringhe di dati provenienti da file CSV, dove i valori all'interno della cella sono separati da virgole. Normalmente, in Excel, per gestire i dati CSV si utilizzano strumenti come "Testo in colonne" o Power Query. Tuttavia, con DIVIDI.TESTO, è possibile ottenere un ottimo risultato in modo molto semplice e veloce.

Questa Funzione, come altre Funzioni sui testi, risulta particolarmente utile quando si devono organizzare dati provenente da esportazioni da altri programmi. In questi casi capita frequentemente che informazioni, che andrebbero suddivise su più colonne, vengono restituite all'interno di una unica cella. 

Gli argomenti della Funzione DIVIDI.TESTO sono raffigurati nella sottostante immagine.

La nuova funzione di matrice dinamica DIVIDI.TESTO

Sintassi della Funzione VIDI.TESTO

La Funzione DIVIDI.TESTO divide un testo in righe o colonne attraverso la definizione di uno o più delimitatori.

Nello specifico la sintassi della Funzione è la seguente:
=DIVIDI.TESTO(text; col_delimiter; [row_delimiter]; [ignore_empty]; [match_mode]; [pad_with])
Nella quale:
text: 
il testo da dividere. Può essere fornito come riferimento ad una cella o ad una stringa.
col_delimiter: uno o più caratteri che definiscono come dividere il testo in colonne. Se omesso è obbligatorio definire row_delimiter.
[row_delimiter]: (argomento facoltativo) uno o più caratteri che definiscono come dividere il testo fra le righe.
[ignore_empty]: (argomento facoltativo) permette di specificare se ignorare valori vuoti.
[match_mode]:]: (argomento facoltativo) permette la distinzione tra maiuscole e minuscole del carattere delimitatore.
- impostando 0 (impostazione predefinita qualora non venisse impostato l'argomento) viene fatta distinzione fra maiuscolo e minuscolo.
- impostando 1 non viene fatta distinzione fra caratteri maiuscoli o minuscoli. [Pad_with]: (argomento facoltativo) permette di definire un valore da utilizzare al posto di un eventuale valore mancante. L'impostazione predefinita è #N/D

Esempi di applicazione della Funzione DIVIDI.TESTO

Primo esempio. Dividere il contenuto di un cella su più colonne.

Per suddividere il contenuto di una specifica cella in più colonne, è necessario indicare come primo argomento (text) il riferimento alla cella che contiene la stringa originale, e come secondo argomento (col_delimiter) il delimitatore che determina il punto in cui deve avvenire la separazione.

Esempio, come illustrato nella sottostante immagine, si desidera separare il nome e il cognome inseriti all'interno di una singola cella.
Nella cella C2. successivamente trascinata nelle sottostanti celle. è stata inserita la seguente Funzione =DIVIDI.TESTO(B2;" ")

applicazione delle Funzioni DIVIDI.TESTO

Nota.
L'eventuale presenza di nomi o cognomi composti (nell'esempio Del Neri) comporterà la restituzione disposta su tre colonne.
Anche possibili errori di imputazione possono comportare disposizioni su più colonne.
Ad esempio, nel caso specifico, nella cella B6 il nominativo Roberto Verdi è stato inserito con due spazi di separazione. 
Per ovviare a questo errore, è possibile sfruttare il quarto argomento della Funzione [ignore_empty]: che permette di specificare se ignorare valori vuoti.
Nello specifico la Funzione (vedi immagine di cui sotto) dovrà essere impostata con la seguente sintassi. =DIVIDI.TESTO(B2;" ";;VERO)
Notare che per bypassare il terzo argomento, anche in questo caso è stato inserito per due volte lo stile separatore del punto e virgola.
Il quarto argomento è stato impostato come VERO ossia ignora valori vuoti. In questo caso viene pertanto ignorato che fra il nome e il cognome siano stati inseriti due spazi vuoti.

Esempio di applicazione della Funzione DIVIDI.TESTO

Secondo esempio. Dividere il contenuto di una cella verticalmente su più righe

In questo secondo esempio si vuole suddividere la restituzione del risultato su colonna e non sulle righe. Per ottenere questo risultato si deve saltare il secondo argomento della funzione ma obbligatoriamente bisogna definire il terzo [row_delimiter].
Nel caso dell'esempio, nella cella D2 è stata inserita la seguente Funzione =DIVIDI.TESTO(B2;;" ")
Notare che il secondo argomento è stato bypassato inserendo per due volte lo stile separatore del punto e virgola.

Esempio di applicazione della Funzione DIVIDI.TESTO

Terzo esempio. Dividere un contenuto sulla base di delimitatori diversi

Concludiamo con una caso particolare, ovvero la necessità di suddividere un testo separato da delimitatori diversi. Nel caso specifico dell'esempio la stringa all'interno della cella B2 è separata con i seguenti caratteri:  ";" ":" "," sono inoltre presenti alcuni caratteri vuoti.
Nel caso specifico la funzione dovrà essere implementata con dei riferimenti di matrice (posti fra parentesi graffe) e al fine di evitare di i caratteri vuoti presenti nella stringa di origine, la Funzione DIVIDI.TESTO, è stata nidificata all'interno della Funzione ANNULLA.SPAZI

Nello specifico, la Funzione inserita nella cella D2 è la seguente: =ANNULLA.SPAZI(DIVIDI.TESTO(B2;{";"\","\":"}))
Tale impostazione permette la restituzione sulle successive colonne di tutti i valori presenti nella stringa di origine, indipendentemente dal separatore e dalla presenza di caratteri vuoti.

Esempio di applicazione della Funzione DIVIDI.TESTO

Applicare DIVIDI.TESTO per separare stringhe di testo provenienti da file CSV

Un file CSV (Comma-Separated Values) è un formato semplice per memorizzare dati tabulari, in cui i valori di ogni riga sono separati da virgole.
Una stringa CSV, quindi, è una singola riga di testo che contiene più valori separati da virgole.
Ad esempio, una stringa come Verona,Rovereto,Trento, .... rappresenta tre comuni diversi, ognuno separata da una virgola.
Tornando all'applicazione di Excel, la funzione DIVIDI.TESTO permette di gestire e manipolare questo tipo di stringhe.
Se in una cella, ad esempio B1, è presente una stringa CSV con diversi comuni, utilizzando la funzione DIVIDI.TESTO impostando il terzo argomento "row.delimiter" è possibile trasformare facilmente questa stringa in una lista verticale.

:: Osservazioni
Nelle versioni di Excel precedenti alla 365 la nuova funzione DOVIDI.TESTO non è disponibile. In alternativa è possibile utilizzare la procedura guidata Testo in colonne, presente nella scheda Dati, gruppo pulsanti Strumenti dati.
Utilizzando Formule e funzioni, è altresì possibile intervenire applicando la funzione TROVA o RICERCA che permettono di individuare la posizione di uno specifico carattere all'interno di una stringa. Successivamente utilizzando le Funzioni SINISTRA e STRINGA.ESTRAI  sarà possibile suddividere il testo.
Le più recenti versioni di Excel mettono altresì a disposizione le due Funzioni TESTO.PRECEDENTE e TESTO.SUCCESSIVO.
Per approfondimento si rimanda a:  Suddividere testi

[Valter Borsato: pubblicato 15/02/2024, revisione: 08/10/2024]

Indice Generale Argomenti: EXCEL