Denne vejledning viser dig, hvordan du konverterer tekststreng i en enkelt celle til flere kolonner ved hjælp af metoden Range TextToColumns i VBA
Tekst til kolonner
Det Rækkevidde.TextToColumns metode i VBA er et kraftfuldt værktøj til at rydde op i data, der f.eks. er importeret fra tekst- eller csv -filer.
Overvej følgende regneark.
Dataene er kommet ind i Excel alt i en kolonne og er adskilt af anførselstegn.
Du kan bruge metoden Range TextToColumns til at opdele disse data i kolonner.
Syntaks for TextToColumns
udtryk.TextToColumns (Bestemmelsessted, Datatype, TextQualifier, Efterfølgende begrænsning, Tab, Semikolon, Komma, Plads, Andet, Andet Char, FieldInfo, DecimalSeparator, TusinderSeparator, TrailingMinusNumbers)
Udtryk
Dette er celleområdet, du ønsker at opdele - f.eks .: Område (“A1: A23”).
Alle argumenterne i metoden TextToColumns er valgfri (de har firkantede parenteser omkring dem).
Bestemmelsessted
Hvor du vil have resultatet til at blive lagt - ofte tilsidesætter du dataene og deler dem på samme sted.
Datatype
Den type tekstanalyse, du bruger - det kan enten være xlBegrænset (standard hvis udeladt) eller xlFixedWidth.
TextQualifier
Hvis du har anførselstegn (enkelt eller dobbelt) omkring hvert felt i teksten, du deler, skal du angive, om de er enkelt eller dobbelt.
ConsequtiveDelimiter
Dette er enten sandt eller forkert og fortæller VBA at overveje 2 af de samme afgrænsere sammen som om det var 1 afgrænser.
Tab
Dette er enten Sand af Falsk, standard er Falsk - dette fortæller VBA, at dataene er afgrænset af en fane.
Semikolon
Dette er entenSand af Falsk, standard er Falsk - dette fortæller VBA, at dataene er afgrænset af et semikolon.
Plads
Dette er enten Sand af Falsk, standard er Falsk - dette fortæller VBA, at dataene er afgrænset af et mellemrum.
Andet
Dette er enten Sand af Falsk, standard er Falsk. Hvis du indstiller dette til Sand, er det næste argument, Andet Char skal specificeres.
Andet Char
Dette er det tegn, hvormed teksten adskilles (dvs.: eller | for eksempel).
FieldInfo
Dette er en matrix, der indeholder oplysninger om den datatype, der adskilles. Den første værdi i matrixen angiver kolonnetallet i dataene, og den anden værdi angiver den konstant, du vil bruge til at skildre den datatype, du har brug for.
Et eksempel på for 5 kolonner med datatyper tekst, tal og datoer kan være:
Array (Array (1, xlTextFormat), Array (2, xlTextFormat), Array (3, xlGeneralFormat), Array (4, xlGeneralFormat), Array (5, xlMDYFormat))
En anden måde at angive dette på er:
Array (Array (1, 2), Array (2, 2), Array (3, 1), Array (4, 1), Array (5, 3))
Tallene i den anden kolonne er værdierne for konstanterne, hvor konstanten xlTextFormat har en værdi på 2, xlGeneralFormat (standard) har en værdi på 1, og xlMDYFormat har en værdi på 3.
DecimalSeparator
Du kan angive den decimalseparator, som VBA skal bruge til, hvis der er tal i dataene. Hvis den udelades, bruger den systemindstillingen, som normalt er en periode.
TusinderSeparator
Du kan angive den tusinder -separator, som VBA skal bruge til, hvis der er tal i dataene. Hvis den udelades, bruger den systemindstillingen, som normalt er et komma.
TrailingMinusNumbers
Dette argument er stort set for kompatibilitet for data, der genereres fra ældre systemer, hvor et minustegn ofte var efter tallet og ikke før. Du bør indstille dette til True, hvis negative tal har minustegnet bag sig. Standarden er falsk.
Konvertering af tekst til kolonner
Følgende procedure konverterer Excel -dataene ovenfor til kolonner.
12345678910111213141516 | Sub TextToCol1 ()Område ("A1: A25"). TextToColumns _Destination: = Område ("A1: A25"),Datatype: = xlDelimited, _TextQualifier: = xlDoubleQuote, _ConsecutiveDelimiter: = True, _Fane: = Falsk, _Semikolon: = Falsk, _Komma: = Falsk,Mellemrum: = Sandt, _Andet: = Falsk, _FieldInfo: = Array (Array (1, 1), Array (2, 1), Array (3, 1), Array (4, 1), Array (5, 1)), _DecimalSeparator: = "." , _ThousandsSeparator: = ",", _TrailingMinusNumbers: = TrueAfslut Sub |
I ovenstående procedure har vi udfyldt alle parametrene. Mange af parametrene er dog indstillet til falsk eller til standardindstillingen og er ikke nødvendige. En renere version af ovenstående procedure er angivet nedenfor. Du skal bruge parameternavnene til at angive, hvilke parametre vi bruger.
1234567 | Sub TextToCol2 ()Område ("A1: A25"). TextToColumns _Datatype: = xlDelimited, _TextQualifier: = xlDoubleQuote, _ConsecutiveDelimiter: = True, _Plads: = Sandt,Afslut Sub |
Der er kun 4 parametre, der faktisk kræves - dataene er afgrænset af et dobbelt citat, du vil have på hinanden følgende citater behandlet som et, og dataene er adskilt af et mellemrum!
For en endnu hurtigere kodelinje kunne vi udelade parameternavne, men så skulle vi sætte kommaer for at gemme parameterens sted. Du behøver kun at lægge oplysninger så langt som til den sidste parameter, du bruger - i dette tilfælde mellemrummet, der adskiller dataene, som er den 8. parameter.
123 | Sub TextToCol3 ()Område ("A1: A25"). TextToColumns, xlDelimited, xlDoubleQuote, True,,,, TrueAfslut Sub |
Når du har kørt nogen af procedurerne ovenfor, vil dataene blive adskilt i henhold til nedenstående grafik.