Denne opplæringen viser deg hvordan du konverterer tekststreng i en enkelt celle til flere kolonner ved hjelp av Range TextToColumns -metoden i VBA
Tekst til kolonner
De Område.TextToColumns metode i VBA er et kraftig verktøy for å rydde opp data som har blitt importert fra tekst- eller csv -filer for eksempel.
Vurder følgende regneark.
Dataene har kommet inn i Excel i en kolonne, og er atskilt med anførselstegn.
Du kan bruke metoden Range TextToColumns til å dele disse dataene i kolonner.
Syntaks for TextToColumns
uttrykk.TextToColumns (Mål, Data-type, TextQualifier, Påfølgende begrensning, Tab, Semikolon, Komma, Rom, Annen, AnnetChar, FieldInfo, DecimalSeparator, Tusenvis separator, EtterfølgendeMinusTall)
Uttrykk
Dette er celleområdet du vil dele - f.eks .: Område ("A1: A23").
Alle argumentene i metoden TextToColumns er valgfrie (de har firkantede parenteser rundt dem).
Mål
Der du vil at resultatet skal legges - ofte overstyrer du dataene og deler dem på samme sted.
Data-type
Typen tekstanalyse du bruker - det kan enten være xlBegrenset (standard hvis utelatt), eller xlFixedWidth.
TextQualifier
Hvis du har anførselstegn (enkelt eller dobbelt) rundt hvert felt i teksten du deler, må du angi om de er enkle eller doble.
ConsequtiveDelimiter
Dette er enten sant eller usant, og forteller VBA å vurdere 2 av de samme avgrenserne sammen som om det var 1 skilletegn.
Tab
Dette er enten ekte av Falsk, standard er Falsk - dette forteller VBA at dataene er avgrenset av en fane.
Semikolon
Dette er entenekte av Falsk, standard er Falsk - dette forteller VBA at dataene er avgrenset av et semikolon.
Rom
Dette er enten ekte av Falsk, standard er Falsk - dette forteller VBA at dataene er avgrenset av et mellomrom.
Annen
Dette er enten ekte av Falsk, standard er Falsk. Hvis du setter dette til True, er det neste argumentet, AnnetChar må spesifiseres.
AnnetChar
Dette er tegnet som teksten skilles fra (dvs.: eller | for eksempel).
FieldInfo
Dette er en matrise som inneholder informasjon om typen data som skilles. Den første verdien i matrisen indikerer kolonnenummeret i dataene, og den andre verdien angir konstanten du skal bruke til å skildre datatypen du trenger.
Et eksempel på for fem kolonner med datatyper tekst, tall og datoer kan være:
Array (Array (1, xlTextFormat), Array (2, xlTextFormat), Array (3, xlGeneralFormat), Array (4, xlGeneralFormat), Array (5, xlMDYFormat))
En annen måte å sette dette på er:
Array (Array (1, 2), Array (2, 2), Array (3, 1), Array (4, 1), Array (5, 3))
Tallene i den andre kolonnen er verdiene til konstantene der konstanten xlTextFormat har verdien 2, xlGeneralFormat (standard) har verdien 1 og xlMDYFormat har en verdi på 3.
DecimalSeparator
Du kan angi desimalseparatoren som VBA må bruke til hvis det er tall i dataene. Hvis den utelates, bruker den systeminnstillingen, som vanligvis er en periode.
Tusenvis separator
Du kan angi tusenvis skilletegn som VBA må bruke til hvis det er tall i dataene. Hvis den utelates, bruker den systeminnstillingen, som vanligvis er et komma.
EtterfølgendeMinusTall
Dette argumentet er i stor grad for kompatibilitet for data som genereres fra eldre systemer der et minustegn ofte var etter tallet og ikke før. Du bør sette dette til True hvis negative tall har minustegnet bak seg. Standard er feil.
Konvertering av tekst til kolonner
Følgende prosedyre konverterer Excel -dataene ovenfor til kolonner.
12345678910111213141516 | Sub TextToCol1 ()Område ("A1: A25"). TextToColumns _Destinasjon: = Område ("A1: A25"),Datatype: = xlDelimited, _TextQualifier: = xlDoubleQuote, _ConsecutiveDelimiter: = True, _Tab: = Falske, _Semikolon: = Falsk, _Komma: = Falske,Mellomrom: = Sant, _Annet: = Falske, _FieldInfo: = Array (Array (1, 1), Array (2, 1), Array (3, 1), Array (4, 1), Array (5, 1)), _DecimalSeparator: = "." , _ThousandsSeparator: = ",", _TrailingMinusNumbers: = TrueSlutt Sub |
I prosedyren ovenfor har vi fylt ut alle parameterne. Imidlertid er mange av parameterne satt til falske eller standardinnstillinger og er ikke nødvendige. En renere versjon av prosedyren ovenfor er angitt nedenfor. Du må bruke parameternavnene for å indikere hvilke parametere vi bruker.
1234567 | Sub TextToCol2 ()Område ("A1: A25"). TextToColumns _Datatype: = xlDelimited, _TextQualifier: = xlDoubleQuote, _ConsecutiveDelimiter: = True, _Mellomrom: = sant,Slutt Sub |
Det er bare fire parametere som faktisk kreves - dataene er avgrenset av et dobbelt anførselstegn, du vil at påfølgende anførselstegn skal behandles som ett, og dataene skilles med et mellomrom!
For en enda raskere kodelinje kan vi utelate parameternavnene, men da må vi sette inn kommaer for å lagre stedet for parameteren. Du trenger bare å legge informasjon så langt som til den siste parameteren du bruker - i dette tilfellet mellomrommet som skiller dataene som er den åttende parameteren.
123 | Sub TextToCol3 ()Område ("A1: A25"). TextToColumns, xlDelimited, xlDoubleQuote, True,,,, TrueSlutt Sub |
Når du har kjørt noen av prosedyrene ovenfor, blir dataene skilt i henhold til grafikken nedenfor.