VBA Text till kolumner

Innehållsförteckning

Denna handledning visar dig hur du konverterar textsträng i en enda cell till flera kolumner med hjälp av metoden Range TextToColumns i VBA

Text till kolumner

De Räckvidd.TextToColumns metod i VBA är ett kraftfullt verktyg för att rensa upp data som har importerats från text- eller csv -filer till exempel.

Tänk på följande kalkylblad.

Data har kommit in i Excel i en kolumn och separeras med citattecken.

Du kan använda metoden Range TextToColumns för att separera dessa data i kolumner.

TextToColumns Syntax

uttryck.TextToColumns (Destination, Data typ, TextQualifier, Efterföljande avgränsare, Flik, Semikolon, Kommatecken, Plats, Övrig, Annat Char, FieldInfo, DecimalSeparator, Tusentals separator, TrailingMinusNumbers)

Uttryck

Detta är cellintervallet du vill dela - t.ex.: Område ("A1: A23").

Alla argument i metoden TextToColumns är valfria (de har hakparenteser runt sig).

Destination

Där du vill att resultatet ska läggas - ofta åsidosätter du data och delar upp det på samma plats.

Data typ

Den typ av textanalys du använder - det kan antingen vara xlDelimited (standard om den utelämnas) eller xlFixedWidth.

TextQualifier

Om du har citattecken (enkla eller dubbla) runt varje fält i texten som du delar upp, måste du ange om de är enkla eller dubbla.

ConsequtiveDelimiter

Detta är antingen sant eller falskt och uppmanar VBA att överväga 2 av samma avgränsare tillsammans som om det vore 1 avgränsare.

Flik

Detta är antingen Sann av Falsk, standard är Falsk - detta berättar för VBA att data avgränsas av en flik.

Semikolon

Detta är antingenSann av Falsk, standard är Falsk - detta berättar för VBA att data avgränsas av ett semikolon.

Plats

Detta är antingen Sann av Falsk, standard är Falsk - detta berättar för VBA att data avgränsas av ett mellanslag.

Övrig

Detta är antingen Sann av Falsk, standard är Falsk. Om du ställer in detta till True, är nästa argument, Annat Char behöver specificeras.

Annat Char

Detta är det tecken med vilket texten separeras (dvs.: eller | till exempel).

FieldInfo

Detta är en array som innehåller information om vilken typ av data som separeras. Det första värdet i matrisen indikerar kolumnnumret i data och det andra värdet anger den konstant som du ska använda för att avbilda den datatyp du behöver.

Ett exempel på för fem kolumner med datatyper av text, siffror och datum kan vara:

Array (Array (1, xlTextFormat), Array (2, xlTextFormat), Array (3, xlGeneralFormat), Array (4, xlGeneralFormat), Array (5, xlMDYFormat))

Ett annat sätt att fastställa detta är:

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

Siffrorna i den andra kolumnen är värdena för konstanterna där konstanten xlTextFormat har ett värde på 2, xlGeneralFormat (standard) har ett värde på 1 och xlMDYFormat har ett värde av 3.

DecimalSeparator

Du kan ange decimalavgränsaren som VBA måste använda om det finns siffror i data. Om den utelämnas använder den systeminställningen, som vanligtvis är en period.

Tusentals separator

Du kan ange tusentalsavgränsaren som VBA måste använda om det finns siffror i data. Om den utelämnas använder den systeminställningen, som vanligtvis är ett kommatecken.

TrailingMinusNumbers

Detta argument är till stor del för kompatibilitet för data som genereras från äldre system där ett minustecken ofta var efter siffran och inte tidigare. Du bör ställa in detta till True om negativa tal har minustecknet bakom sig. Standard är falskt.

Konvertera text till kolumner

Följande procedur kommer att konvertera Excel -data ovan till kolumner.

12345678910111213141516 Sub TextToCol1 ()Område ("A1: A25"). TextToColumns _Destination: = Område ("A1: A25"),Datatyp: = xlDelimited, _TextQualifier: = xlDoubleQuote, _ConsecutiveDelimiter: = True, _Flik: = Falskt, _Semikolon: = Falskt, _Komma: = falskt,Mellanslag: = Sant, _Annat: = Falskt, _FieldInfo: = Array (Array (1, 1), Array (2, 1), Array (3, 1), Array (4, 1), Array (5, 1)), _DecimalSeparator: = "." , _ThousandsSeparator: = ",", _TrailingMinusNumbers: = SantAvsluta Sub

I ovanstående procedur har vi fyllt i alla parametrar. Många av parametrarna är dock inställda på falska eller på standardinställningen och är inte nödvändiga. En renare version av ovanstående procedur anges nedan. Du måste använda parameternamnen för att ange vilka parametrar vi använder.

1234567 Sub TextToCol2 ()Område ("A1: A25"). TextToColumns _Datatyp: = xlDelimited, _TextQualifier: = xlDoubleQuote, _ConsecutiveDelimiter: = True, _Mellanslag: = Sant,Avsluta Sub

Det finns bara 4 parametrar som faktiskt krävs - data avgränsas av ett dubbelcitat, du vill att på varandra följande citat ska behandlas som en och data separeras av ett mellanslag!

För en ännu snabbare kodrad kan vi utelämna parameternamnen, men då skulle vi behöva sätta i kommatecken för att spara parametern. Du behöver bara lägga information så långt som till den sista parametern du använder - i detta fall det utrymme som separerar data som är den åttonde parametern.

123 Sub TextToCol3 ()Område ("A1: A25"). TextToColumns, xlDelimited, xlDoubleQuote, True,,,, TrueAvsluta Sub

När du har kört någon av procedurerna ovan kommer data att separeras enligt grafiken nedan.

wave wave wave wave wave