Quando si lavora con VBA in Excel, potrebbe essere necessario dividere una stringa in parti diverse in base a un delimitatore.

Ad esempio, se si dispone di un indirizzo, è possibile utilizzare la funzione Split VBA per ottenere diverse parti dell’indirizzo separate da una virgola (che sarebbe il delimitatore in questo caso).

SPLIT è una funzione stringa incorporata in Excel VBA che è possibile utilizzare per dividere una stringa di testo in base al delimitatore.,

Questo tutorial copre:

Excel VBA SPLIT Function – Syntax

Split ( Expression, , , )
  • Espressione: Questa è la stringa che si desidera dividere in base al delimitatore. Ad esempio, nel caso dell’esempio di indirizzo, l’intero indirizzo sarebbe l’espressione. Nel caso in cui questa sia una stringa di lunghezza zero ( “” ) La funzione SPLIT restituirebbe un array vuoto.Delimitatore
  • : Questo è un argomento facoltativo. Questo è il delimitatore che viene utilizzato per dividere l’argomento ‘Expression’., Nel caso del nostro esempio di indirizzo, una virgola è un delimitatore che viene utilizzato per dividere l’indirizzo in parti diverse. Se non si specifica questo argomento, un carattere di spazio viene considerato il delimitatore predefinito. Nel caso in cui si dia una stringa di lunghezza zero (“”), l’intera stringa ‘Espressione’ viene restituita dalla funzione.
  • Limit: Questo è un argomento opzionale. Qui si specifica il numero totale di sottostringhe che si desidera restituire. Ad esempio, se si desidera restituire solo le prime tre sottostringhe dall’argomento ‘Expression’, questo sarebbe 3., Se non si specifica questo argomento, il valore predefinito è -1, che restituisce tutte le sottostringhe.
  • Confronta: Questo è un argomento opzionale. Qui si specifica il tipo di confronto che si desidera che la funzione SPLIT esegua quando si valutano le sottostringhe. Sono disponibili le seguenti opzioni:
    • Quando Compare è 0: Questo è un confronto binario. Ciò significa che se il tuo delimitatore è una stringa di testo (diciamo ABC), allora questo sarebbe case-sensitive. ‘ABC’ non sarebbe uguale a ‘abc’.
    • Quando il confronto è 1: Questo è un confronto di testo., Ciò significa che se il tuo delimitatore è una stringa di testo (diciamo ABC), anche se hai ‘abc’ nella stringa ‘Expression’, sarebbe considerato come un delimitatore.

Ora che abbiamo coperto le basi della funzione SPLIT, vediamo alcuni esempi pratici.

Esempio 1 – Dividi le parole in una frase

Supponiamo di avere il testo – “La volpe marrone veloce salta sul cane pigro”.

Posso usare la funzione SPLIT per ottenere ogni parola di questa frase come elemento separato in un array.,

Il codice seguente sarebbe a questo:

Sub SplitWords()Dim TextStrng As StringDim Result() As StringTextStrng = "The Quick Brown Fox Jumps Over The Lazy Dog"Result() = Split(TextStrng)End Sub

Mentre il codice non fa nulla di utile, ti aiuterà a capire cosa fa la funzione Split in VBA.

Funzione Split divide la stringa di testo e assegna ogni parola alla matrice Risultato.

Quindi in questo caso:

  • Result(0) memorizza il valore “The”
  • Result(1) memorizza il valore “Quick”
  • Result(2) memorizza il valore “Brown” e così via.

In questo esempio, abbiamo specificato solo il primo argomento – che è il testo da dividere., Poiché non è stato specificato alcun delimitatore, prende il carattere spazio come delimitatore predefinito.

Nota importante:

  1. La funzione SPLIT VBA restituisce un array che inizia dalla base 0.
  2. Quando il risultato della funzione SPLIT viene assegnato a un array, tale array deve essere dichiarato come un tipo di dati stringa. Se lo dichiari come tipo di dati variante, mostrerà un errore di mancata corrispondenza del tipo). Nell’esempio sopra, si noti che ho dichiarato Result() come tipo di dati stringa.,

Esempio 2 – Contare il numero di parole in una frase

È possibile utilizzare la funzione SPLIT per ottenere il numero totale di parole in una frase. Il trucco qui è contare il numero di elementi nell’array che si ottiene quando si divide il testo.

Il codice sottostante mostrerebbe una finestra di messaggio con il conteggio delle parole:

Sub WordCount()Dim TextStrng As StringDim WordCount As IntegerDim Result() As StringTextStrng = "The Quick Brown Fox Jumps Over The Lazy Dog"Result = Split(TextStrng)WordCount = UBound(Result()) + 1MsgBox "The Word Count is " & WordCountEnd Sub

In questo caso, la funzione UBound ci dice il limite superiore dell’array (cioè il numero massimo di elementi dell’array)., Poiché la base dell’array è 0, viene aggiunto 1 per ottenere il conteggio totale delle parole.

È possibile utilizzare un codice simile per creare una funzione personalizzata in VBA che prenderà il testo come input e restituirà il conteggio delle parole.

Il codice sottostante creerà questa funzione:

Una volta creato, è possibile utilizzare la funzione WordCount proprio come qualsiasi altra funzione normale.

Questa funzione gestisce anche spazi iniziali, finali e doppi tra le parole. Ciò è stato reso possibile utilizzando la funzione TRIM nel codice VBA.,

Nel caso in cui vuoi saperne di più su come funziona questa formula per contare il numero di parole in una frase o vuoi conoscere un modo di formula non VBA per ottenere il conteggio delle parole, dai un’occhiata a questo tutorial.

Esempio 3 – Utilizzo di un delimitatore Diverso dal carattere Spazio

Nei due esempi precedenti, abbiamo usato solo un argomento nella funzione SPLIT, e il resto erano gli argomenti predefiniti.

Quando si utilizza un altro delimitatore, è necessario specificarlo nella formula di DIVISIONE.,

Nel codice seguente, la funzione SPLIT restituisce un array basato su una virgola come delimitatore e quindi mostra un messaggio con ogni parola in una riga separata.

Nel codice precedente, ho usato il ciclo For Next per passare attraverso ogni elemento dell’array ‘Result’ assegnandolo alla variabile ‘DisplayText’.

Esempio 4 – Dividere un indirizzo in tre parti

Con la funzione SPLIT, è possibile specificare il numero di suddivisioni che si desidera ottenere. Ad esempio, se non specifico nulla, ogni istanza del delimitatore verrà utilizzata per dividere la stringa.,

Ma se specifico3 come limite, la stringa verrà divisa solo in tre parti.

Ad esempio, se ho il seguente indirizzo:

2703 Winifred Way, Indianapolis, Indiana, 46204

Posso usare la funzione Split in VBA per dividere questo indirizzo in tre parti.

Divide i primi due in base al delimitatore di virgole e la parte rimanente diventa il terzo elemento dell’array.,

Il codice seguente mostrerebbe l’indirizzo in tre righe diverse in una finestra di messaggio:

Uno degli usi pratici di questo potrebbe essere quando si desidera dividere un singolo indirizzo di riga nel formato mostrato nella finestra di messaggio. Quindi è possibile creare una funzione personalizzata che restituisce l’indirizzo diviso in tre parti (con ogni parte in una nuova riga).

Il seguente codice farebbe questo:

Una volta che hai questo codice nel modulo, puoi usare la funzione (ThreePartAddress) nella cartella di lavoro proprio come qualsiasi altra funzione di Excel.,

Questa funzione accetta un argomento: il riferimento della cella con l’indirizzo.

Si noti che affinché l’indirizzo risultante appaia in tre righe diverse, è necessario applicare il formato di testo a capo alle celle (è nella scheda Home nel gruppo di allineamento). Se il formato ‘Wrap Text’ non è abilitato, vedrai l’intero indirizzo come una singola riga.

Esempio 5 – Ottieni il nome della città dall’indirizzo

Con la funzione Split in VBA, puoi specificare quale parte dell’array risultante vuoi usare.,

Ad esempio, supponiamo di dividere il seguente indirizzo in base alla virgola come delimitatore:

2703 Winifred Way, Indianapolis, Indiana, 46204

L’array risultante apparirebbe come mostrato di seguito:

{"2703 Winifred Way", "Indianapolis", "Indiana", "46204"}

Poiché questo è un array, posso scegliere di visualizzare o restituire una parte specifica di questo array.

Di seguito è riportato un codice per una funzione personalizzata, in cui è possibile specificare un numero e restituirà quell’elemento dall’array. Ad esempio, se voglio il nome dello stato, posso specificare 3 (poiché è il terzo elemento nell’array).,

La funzione di cui sopra prende due argomenti, il riferimento di cella che ha l’indirizzo e il numero di elemento che si desidera restituire. La funzione Split divide gli elementi dell’indirizzo e lo assegna alla variabile Risultato.

Quindi restituisce il numero di elemento specificato come secondo argomento. Si noti che poiché la base è 0, ElementNumber-1 viene utilizzato per restituire la parte corretta dell’indirizzo.

Questa formula personalizzata è più adatta quando si dispone di un formato coerente in tutto l’indirizzo, ovvero la città viene sempre menzionata dopo le due virgole., Se i dati non sono coerenti, non otterrai il risultato desiderato.

Nel caso in cui si desideri il nome della città, è possibile utilizzare 2 come secondo argomento. Nel caso in cui si utilizzi un numero superiore al numero totale di elementi, restituirà il VALORE#! errore.

È possibile semplificare ulteriormente il codice come mostrato di seguito:

Nel codice precedente, invece di utilizzare la variabile Risultato, restituisce solo il numero di elemento specificato.

Quindi se hai Split (”Buongiorno”) (0), restituirebbe solo il primo elemento, che è”Buono”.,

Allo stesso modo, nel codice precedente, restituisce solo il numero di elemento specificato.

Potrebbero piacerti anche i seguenti tutorial di Excel:

  • Funzione Excel VBA InStr – spiegata con esempi.
  • Come ordinare i dati in Excel utilizzando VBA (una guida passo-passo).
  • 7 Cose incredibili Excel Text to Columns può fare per voi.
  • Come ottenere il conteggio delle parole in Excel.
  • Funzione di taglio VBA.