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.