VBA -tekst til kolonner

Innholdsfortegnelse

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.

wave wave wave wave wave