Text VBA do sloupců

Tento tutoriál vám ukáže, jak převést řetězec textu v jedné buňce na více sloupců pomocí metody Range TextToColumns ve VBA

Text do sloupců

The Rozsah.TextToColumns metoda ve VBA je účinný nástroj pro čištění dat, která byla importována například z textových nebo CSV souborů.

Zvažte následující list.

Data byla do Excelu vložena v jednom sloupci a jsou oddělena uvozovkami.

K oddělení těchto dat do sloupců můžete použít metodu Range TextToColumns.

Syntaxe TextToColumns

výraz.TextToColumns (Destinace, Datový typ, Kvalifikátor textu, Po sobě jdoucí odstraňovač, Tab, Středník, Čárka, Prostor, jiný, OtherChar, FieldInfo, Desetinný oddělovač, Oddělovač tisíců, TrailingMinusNumbers)

Výraz

Toto je rozsah buněk, které chcete rozdělit - např .: Rozsah („A1: A23“).

Všechny argumenty v metodě TextToColumns jsou volitelné (mají kolem sebe hranaté závorky).

Destinace

Kam chcete výsledek vložit - často přepíšete data a rozdělíte je na stejné místo.

Datový typ

Typ analýzy textu, který používáte - může to být buď xlDemitmited (výchozí, pokud je vynechán), nebo xlFixedWidth.

Kvalifikátor textu

Pokud máte uvozovky (jednoduché nebo dvojité) kolem každého pole v textu, který rozdělujete, musíte uvést, zda jsou jednoduché nebo dvojité.

ConsequtiveDelimiter

To je buď pravda, nebo nepravda a říká VBA, aby zvážila 2 stejné oddělovače dohromady, jako by to byl 1 oddělovač.

Tab

To je buď Skutečný z Nepravdivé, výchozí je Nepravdivé - to říká VBA, že data jsou oddělena tabulátorem.

Středník

To je buďSkutečný z Nepravdivé, výchozí je Nepravdivé - to říká VBA, že data jsou oddělena středníkem.

Prostor

To je buď Skutečný z Nepravdivé, výchozí je Nepravdivé - to říká VBA, že data jsou oddělena mezerou.

jiný

To je buď Skutečný z Nepravdivé, výchozí je Nepravdivé. Pokud toto nastavíte na True, pak další argument, OtherChar je třeba upřesnit.

OtherChar

Toto je znak, kterým je text oddělen (například: nebo | například).

FieldInfo

Toto je pole obsahující informace o typu dat, která se oddělují. První hodnota v poli označuje číslo sloupce v datech a druhá hodnota označuje konstantu, kterou budete používat k zobrazení požadovaného datového typu.

Příkladem pro 5 sloupců s datovými typy textu, čísel a dat může být:

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

Další způsob, jak to nastavit, je:

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

Čísla ve druhém sloupci jsou hodnoty konstant, kde konstanta xlTextFormat má hodnotu 2, xlGeneralFormat (výchozí) má hodnotu 1 a xlMDYFormat má hodnotu 3.

Desetinný oddělovač

Můžete zadat oddělovač desetinných míst, který musí VBA použít, pokud jsou v datech čísla. Pokud je vynechán, použije nastavení systému, což je obvykle tečka.

Oddělovač tisíců

Můžete zadat oddělovač tisíců, který musí VBA použít, pokud jsou v datech čísla. Pokud je vynechán, použije nastavení systému, což je obvykle čárka.

TrailingMinusNumbers

Tento argument je z velké části kvůli kompatibilitě dat generovaných ze starších systémů, kde bylo za číslem často znaménko minus a ne dříve. Pokud záporná čísla mají za sebou znaménko minus, měli byste to nastavit na True. Výchozí hodnota je False.

Převod textu na sloupce

Následující postup převede data aplikace Excel výše do sloupců.

12345678910111213141516 PodtextToCol1 ()Rozsah ("A1: A25"). TextToColumns _Cíl: = Dosah ("A1: A25"),DataType: = xlDelimited, _TextQualifier: = xlDoubleQuote, _ConsequiveDelimiter: = True, _Tab: = False, _Středník: = False, _Čárka: = Nepravda,Mezera: = Pravda, _Jiné: = False, _FieldInfo: = Array (Array (1, 1), Array (2, 1), Array (3, 1), Array (4, 1), Array (5, 1)), _DecimalSeparator: = "." , _ThousandsSeparator: = ",", _TrailingMinusNumbers: = PravdaEnd Sub

Ve výše uvedeném postupu jsme vyplnili všechny parametry. Mnoho parametrů je však nastaveno na hodnotu false nebo na výchozí nastavení a není nutné. Čistší verze výše uvedeného postupu je uvedena níže. Názvy parametrů musíte použít k označení, které parametry používáme.

1234567 Sub TextToCol2 ()Rozsah ("A1: A25"). TextToColumns _DataType: = xlDelimited, _TextQualifier: = xlDoubleQuote, _ConsequiveDelimiter: = True, _Mezera: = Pravda,End Sub

Ve skutečnosti jsou požadovány pouze 4 parametry - data jsou oddělena dvojitou uvozovkou, chcete, aby za sebou následující uvozovky byly považovány za jeden a data jsou oddělena mezerou!

Pro ještě rychlejší řádek kódu bychom mohli vynechat názvy parametrů, ale pak bychom museli uložit čárky, abychom uložili místo parametru. Musíte pouze vložit informace o posledním parametru, který používáte - v tomto případě o mezeru, která odděluje data, což je 8. parametr.

123 PodtextToCol3 ()Rozsah ("A1: A25"). TextToColumns, xlDelimited, xlDoubleQuote, True,,,, TrueEnd Sub

Jakmile spustíte některý z výše uvedených postupů, budou data oddělena podle obrázku níže.

wave wave wave wave wave