Testo VBA su colonne

Questo tutorial ti mostrerà come convertire una stringa di testo in una singola cella in più colonne usando il metodo Range TextToColumns in VBA

Testo in colonne

Il Gamma.TestoAColonne Il metodo in VBA è un potente strumento per ripulire i dati che sono stati importati, ad esempio, da file di testo o csv.

Considera il seguente foglio di lavoro.

I dati sono entrati in Excel tutti in una colonna e sono separati da virgolette.

Puoi usare il metodo Range TextToColumns per separare questi dati in colonne.

Sintassi TextToColumns

espressione.TestoAColonne (Destinazione, Tipo di dati, Qualificatore di testo, Delimitatore consecutivo, tab, Punto e virgola, Virgola, Spazio, Altro, AltroChar, Informazioni sul campo, Separatore decimale, MigliaiaSeparatore, TrailingMinusNumeri)

Espressione

Questo è l'intervallo di celle che desideri dividere, ad es. Intervallo ("A1: A23").

Tutti gli argomenti nel metodo TextToColumns sono facoltativi (sono circondati da parentesi quadre).

Destinazione

Dove vuoi che venga messo il risultato - spesso sovrascrivi i dati e li dividi nella stessa posizione.

Tipo di dati

Il tipo di analisi del testo che stai utilizzando: può essere xlDelimitato (predefinito se omesso), oppure xlLarghezza fissa.

Qualificatore di testo

Se hai virgolette (singole o doppie) attorno a ciascun campo nel testo che stai dividendo, devi indicare se sono singole o doppie.

ConsequtiveDelimiter

Questo è vero o falso e dice a VBA di considerare 2 degli stessi delimitatori insieme come se fosse 1 delimitatore.

tab

Questo è o Vero di falso, il valore predefinito è falso - questo dice a VBA che i dati sono delimitati da una Tab.

Punto e virgola

Questo è oVero di falso, il valore predefinito è falso - questo dice a VBA che i dati sono delimitati da un punto e virgola.

Spazio

Questo è o Vero di falso, il valore predefinito è falso - questo dice a VBA che i dati sono delimitati da uno spazio.

Altro

Questo è o Vero di falso, il valore predefinito è falso. Se lo imposti su True, l'argomento successivo, AltroChar deve essere specificato.

AltroChar

Questo è il carattere con cui è separato il testo (es: o | per esempio).

Informazioni sul campo

Questo è un array contenente informazioni sul tipo di dati che vengono separati. Il primo valore nell'array indica il numero di colonna nei dati e il secondo valore indica la costante che utilizzerai per rappresentare il tipo di dati richiesto.

Un esempio di 5 colonne con tipi di dati di testo, numeri e date potrebbe essere:

Matrice(Matrice(1, xlTextFormat), matrice(2, xlTextFormat), matrice(3, xlGeneralFormat), matrice(4, xlGeneralFormat), matrice(5, xlMDYFormat))

Un altro modo per impostarlo è:

Matrice(Matrice(1, 2), Matrice(2, 2), Matrice(3, 1), Matrice(4, 1), Matrice(5, 3))

I numeri nella seconda colonna sono i valori delle costanti in cui la costante xlTextFormat ha valore 2, xlGeneralFormat (predefinito) ha valore 1 e xlMDYFormat ha valore 3.

Separatore decimale

È possibile specificare il separatore decimale che VBA deve utilizzare se sono presenti numeri nei dati. Se omesso, utilizzerà l'impostazione di sistema, che di solito è un punto.

MigliaiaSeparatore

È possibile specificare il separatore delle migliaia che VBA deve utilizzare se sono presenti numeri nei dati. Se omesso, utilizzerà l'impostazione di sistema, che di solito è una virgola.

TrailingMinusNumeri

Questo argomento è in gran parte per la compatibilità per i dati generati da sistemi meno recenti in cui un segno meno era spesso dopo il numero e non prima. Dovresti impostarlo su True se i numeri negativi hanno il segno meno dietro di loro. Il valore predefinito è falso.

Conversione di testo in colonne

La seguente procedura convertirà i dati di Excel sopra in colonne.

12345678910111213141516 Sub TextToCol1()Intervallo("A1:A25").TextToColumns _Destinazione:=Intervallo("A1:A25"),DataType:=xlDelimitato, _TextQualifier:=xlDoubleQuote, _ConsecutiveDelimiter:=Vero, _Tab:=Falso, _Punto e virgola:=Falso, _Virgola:=Falso,Spazio:=Vero, _Altro:=Falso, _FieldInfo:=Matrice(Matrice(1, 1), Matrice(2, 1), Matrice(3, 1), Matrice(4, 1), Matrice(5, 1)), _DecimalSeparator:="." , _ThousandsSeparator:=",", _TrailingMinusNumbers:=VeroFine sottotitolo

Nella procedura di cui sopra abbiamo compilato tutti i parametri. Tuttavia, molti dei parametri sono impostati su false o sull'impostazione predefinita e non sono necessari. Di seguito è riportata una versione più pulita della procedura di cui sopra. È necessario utilizzare i nomi dei parametri per indicare quali parametri stiamo utilizzando.

1234567 Sub TextToCol2()Intervallo("A1:A25").TextToColumns _DataType:=xlDelimitato, _TextQualifier:=xlDoubleQuote, _ConsecutiveDelimiter:=Vero, _Spazio:=Vero,Fine sottotitolo

Ci sono solo 4 parametri che sono effettivamente richiesti: i dati sono delimitati da virgolette doppie, vuoi che le virgolette consecutive vengano trattate come una sola e i dati siano separati da uno spazio!

Per una riga di codice ancora più veloce, potremmo omettere i nomi dei parametri, ma poi dovremmo inserire le virgole per salvare la posizione del parametro. Devi solo inserire le informazioni fino all'ultimo parametro che stai utilizzando, in questo caso lo spazio che separa i dati che è l'ottavo parametro.

123 Sub TextToCol3()Intervallo("A1:A25").TextToColumns , xlDelimited, xlDoubleQuote, True, , , , TrueFine sottotitolo

Una volta eseguita una delle procedure di cui sopra, i dati verranno separati secondo il grafico sottostante.

wave wave wave wave wave