VBA szöveg oszlopokba

Tartalomjegyzék

Ez az oktatóanyag megmutatja, hogyan lehet egyetlen cellában lévő szöveges karakterláncot több oszlopba konvertálni a VBA Range TextToColumns módszerével

Szöveg oszlopokba

Az Hatótávolság.TextToColumns metódus a VBA -ban egy hatékony eszköz a szöveges vagy csv fájlokból importált adatok tisztítására.

Tekintsük a következő munkalapot.

Az adatok egy oszlopba kerültek az Excelbe, és idézőjelek választják el őket.

A Range TextToColumns módszerrel elválaszthatja ezeket az adatokat oszlopokra.

TextToColumns szintaxis

kifejezés.TextToColumns (Rendeltetési hely, Adattípus, TextQualifier, ConsecutiveDelimiter, Tab, Pontosvessző, Vessző, Tér, Egyéb, EgyébChar, FieldInfo, DecimalSeparator, Ezer elválasztó, TrailingMinusNumbers)

Kifejezés

Ez a felosztani kívánt cellatartomány - pl .: Tartomány („A1: A23”).

A TextToColumns metódus összes argumentuma opcionális (szögletes zárójelek vannak körülötte).

Rendeltetési hely

Ahol az eredményt szeretné elhelyezni - gyakran felülbírálja az adatokat, és ugyanazon a helyen osztja fel őket.

Adattípus

Az Ön által használt szövegszerkesztő típusa - lehet xlKorlátozott (alapértelmezett, ha kihagyják), vagy xlFixedWidth.

TextQualifier

Ha a felosztott szöveg minden mezője körül idézőjelek vannak (egyszeri vagy kettős), akkor meg kell jelölnie, hogy egyszeres vagy kettős.

KövetkezőDelimiter

Ez vagy igaz, vagy hamis, és azt mondja a VBA -nak, hogy vegyen figyelembe két azonos határolóelemet együtt, mintha 1 határoló lenne.

Tab

Ez vagy Igaz nak,-nek Hamis, az alapértelmezett az Hamis - ez azt mondja a VBA -nak, hogy az adatokat tabulátor határolja.

Pontosvessző

Ez vagyIgaz nak,-nek Hamis, az alapértelmezett az Hamis - ez azt mondja a VBA -nak, hogy az adatokat pontosvessző határolja.

Tér

Ez vagy Igaz nak,-nek Hamis, az alapértelmezett az Hamis - ez azt mondja a VBA -nak, hogy az adatokat szóköz határolja.

Egyéb

Ez vagy Igaz nak,-nek Hamis, az alapértelmezett az Hamis. Ha ezt Igaz értékre állítja, akkor a következő érv: EgyébChar pontosítani kell.

EgyébChar

Ez az a karakter, amellyel a szöveget elválasztják egymástól (például: vagy |).

FieldInfo

Ez egy tömb, amely információkat tartalmaz a szétválasztandó adatok típusáról. A tömb első értéke az adatok oszlopszámát jelzi, a második pedig azt az állandót, amelyet a kívánt adattípus ábrázolására használ.

Példa 5 oszlopra, amelyek adattípusú szöveget, számokat és dátumokat tartalmazhatnak:

Tömb (tömb (1, xlTextFormat), Tömb (2, xlTextFormat), Tömb (3, xlGeneralFormat), Tömb (4, xlGeneralFormat), Tömb (5, xlMDYFormat))

Ennek megállapításának másik módja:

Tömb (tömb (1, 2), tömb (2, 2), tömb (3, 1), tömb (4, 1), tömb (5, 3))

A második oszlopban szereplő számok azon állandók értékei, ahol az xlTextFormat konstans értéke 2, az xlGeneralFormat (alapértelmezett) értéke 1, az xlMDYFormat értéke pedig 3.

DecimalSeparator

Megadhatja a tizedes elválasztót, amelyet a VBA -nak használnia kell, ha számok vannak az adatokban. Ha elhagyja, akkor a rendszerbeállítást használja, ami általában egy pont.

Ezer elválasztó

Megadhatja, hogy a VBA -nak hány ezer elválasztót kell használnia, ha számok vannak az adatokban. Ha elhagyja, akkor a rendszerbeállítást használja, amely általában vessző.

TrailingMinusNumbers

Ez az érv nagyrészt a régebbi rendszerekből származó adatok kompatibilitására vonatkozik, ahol a mínuszjel gyakran a szám után volt, és nem korábban. Ezt akkor érdemes True értékre állítani, ha a negatív számok mögött mínuszjel áll. Az alapértelmezett érték hamis.

Szöveg konvertálása oszlopokká

A következő eljárás a fenti Excel adatokat oszlopokká alakítja.

12345678910111213141516 Sub TextToCol1 ()Tartomány ("A1: A25"). TextToColumns _Cél: = Tartomány ("A1: A25"),Adattípus: = xlKorlátozott, _TextQualifier: = xlDoubleQuote, _ConsecutiveDelimiter: = Igaz, _Lap: = Hamis, _Pontosvessző: = hamis, _Vessző: = Hamis,Szóköz: = Igaz, _Egyéb: = Hamis, _FieldInfo: = Tömb (tömb (1, 1), tömb (2, 1), tömb (3, 1), tömb (4, 1), tömb (5, 1)), _DecimalSeparator: = "." , _ThousandsSeparator: = ",", _TrailingMinusNumbers: = IgazEnd Sub

A fenti eljárásban minden paramétert kitöltöttünk. Sok paraméter azonban hamisra vagy alapértelmezettre van állítva, és nem szükséges. A fenti eljárás tisztább verzióját az alábbiakban ismertetjük. A paraméterek nevével kell jelezni, hogy mely paramétereket használjuk.

1234567 Sub TextToCol2 ()Tartomány ("A1: A25"). TextToColumns _Adattípus: = xlKorlátozott, _TextQualifier: = xlDoubleQuote, _ConsecutiveDelimiter: = Igaz, _Szóköz: = Igaz,End Sub

Valójában csak 4 paraméterre van szükség - az adatokat kettős idézőjel határolja, azt szeretné, ha az egymást követő idézeteket egyként kezelnénk, és az adatokat szóköz választja el!

A még gyorsabb kódsor érdekében kihagyhatnánk a paraméterneveket, de akkor vesszőt kell tennünk a paraméter helyének mentéséhez. Csak az utolsó használt paraméterig kell megadnia az információkat - ebben az esetben a 8. paraméter adatait elválasztó szóközt.

123 Sub TextToCol3 ()Tartomány ("A1: A25"). TextToColumns, xlDelimited, xlDoubleQuote, True,,,, TrueEnd Sub

A fenti eljárások bármelyikének futtatása után az adatokat az alábbi ábra szerint választjuk szét.

wave wave wave wave wave