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.