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.