Tekst VBA do kolumn

Spisie treści

Ten samouczek pokaże Ci, jak przekonwertować ciąg tekstu w pojedynczej komórce na wiele kolumn przy użyciu metody Range TextToColumns w VBA

Tekst do kolumn

ten Zasięg.TekstDoKolumn Metoda w VBA to potężne narzędzie do czyszczenia danych, które zostały zaimportowane na przykład z plików tekstowych lub csv.

Rozważ poniższy arkusz.

Dane dotarły do ​​Excela w jednej kolumnie i są oddzielone cudzysłowami.

Możesz użyć metody Range TextToColumns, aby podzielić te dane na kolumny.

Składnia TextToColumns

wyrażenie.TekstDoKolumn (Miejsce docelowe, Typ danych, Kwalifikator tekstu, Kolejny Ogranicznik, Patka, Średnik, Przecinek, Przestrzeń, Inne, InneChar, Informacje o polu, Separator liczb dziesiętnych, Separator tysięcy, KońcoweMinusNumbers)

Wyrażenie

Jest to zakres komórek, które chcesz podzielić - np.: Zakres(„A1:A23”).

Wszystkie argumenty w metodzie TextToColumns są opcjonalne (otoczone są nawiasami kwadratowymi).

Miejsce docelowe

Gdzie chcesz umieścić wynik - często nadpisujesz dane i dzielisz je w tej samej lokalizacji.

Typ danych

Rodzaj używanego parsowania tekstu - może to być: xlRozdzielony (domyślnie, jeśli pominięto), lub xlStała szerokość.

Kwalifikator tekstu

Jeśli wokół każdego pola w dzielonym tekście znajdują się cudzysłowy (pojedyncze lub podwójne), należy wskazać, czy są one pojedyncze czy podwójne.

Ogranicznik Konsekwencji

Jest to prawda lub fałsz i mówi VBA, aby rozważył 2 takie same ograniczniki razem, tak jakby był 1 ogranicznikiem.

Patka

To jest albo Prawdziwe z Fałszywe, domyślna jest Fałszywe - informuje VBA, że dane są oddzielone tabulatorem.

Średnik

To jest alboPrawdziwe z Fałszywe, domyślna jest Fałszywe - informuje VBA, że dane są oddzielone średnikiem.

Przestrzeń

To jest albo Prawdziwe z Fałszywe, domyślna jest Fałszywe - informuje VBA, że dane są oddzielone spacją.

Inne

To jest albo Prawdziwe z Fałszywe, domyślna jest Fałszywe. Jeśli ustawisz to na True, to następny argument, InneChar należy określić.

InneChar

Jest to znak oddzielający tekst (np. lub |).

Informacje o polu

Jest to tablica zawierająca informacje o typie rozdzielanych danych. Pierwsza wartość w tablicy wskazuje numer kolumny w danych, a druga wartość wskazuje stałą, której zamierzasz użyć do zobrazowania wymaganego typu danych.

Przykładem dla 5 kolumn z typami danych tekst, liczby i daty może być:

Tablica(Tablica(1, xlFormat tekstu), Tablica(2, xlFormat tekstu), Tablica(3, xlOgólny Format), Tablica(4, xlOgólny Format), Tablica(5, xlMDYFormat))

Innym sposobem na określenie tego jest:

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

Liczby w drugiej kolumnie to wartości stałych, gdzie stała xlTextFormat ma wartość 2, xlGeneralFormat (domyślnie) ma wartość 1, a xlMDYFormat ma wartość 3.

Separator liczb dziesiętnych

Możesz określić separator dziesiętny, którego VBA musi używać, jeśli dane zawierają liczby. Jeśli zostanie pominięty, użyje ustawienia systemowego, którym zwykle jest kropka.

Separator tysięcy

Możesz określić separator tysięcy, którego VBA musi używać, jeśli dane zawierają liczby. Jeśli zostanie pominięty, użyje ustawienia systemowego, którym zwykle jest przecinek.

KońcoweMinusNumbers

Ten argument dotyczy głównie zgodności danych generowanych ze starszych systemów, w których znak minus często znajdował się po liczbie, a nie przed. Powinieneś ustawić to na True, jeśli liczby ujemne mają za sobą znak minus. Wartość domyślna to Fałsz.

Konwersja tekstu na kolumny

Poniższa procedura spowoduje konwersję powyższych danych programu Excel na kolumny.

12345678910111213141516 PodtekstDoKolumny1()Zakres("A1:A25").TekstDoKolumn _Miejsce docelowe:=Zakres("A1:A25"),TypDanych:=xlRozdzielony, _TextQualifier:=xlDoubleQuote, _Kolejny Delimiter:=Prawda, _Tab:=Fałsz, _Średnik:=Fałsz, _Przecinek:=Fałsz,Spacja:=prawda, _Inne:=Fałsz, _FieldInfo:=Array(Array (1, 1), Array (2, 1), Array (3, 1), Array (4, 1), Array (5, 1)), _Separator dziesiętny:="." , _Separator tysięcy:=",", _KońcoweMinusNumbers:=TrueNapis końcowy

W powyższej procedurze wypełniliśmy wszystkie parametry. Jednak wiele parametrów ma wartość false lub ustawienie domyślne i nie jest to konieczne. Bardziej przejrzystą wersję powyższej procedury przedstawiono poniżej. Musisz użyć nazw parametrów, aby wskazać, których parametrów używamy.

1234567 Sub TextToCol2()Zakres("A1:A25").TekstDoKolumn _TypDanych:=xlRozdzielony, _TextQualifier:=xlDoubleQuote, _Kolejny Delimiter:=Prawda, _Spacja:=prawda,Napis końcowy

W rzeczywistości wymagane są tylko 4 parametry - dane są oddzielone podwójnym cudzysłowem, chcesz, aby kolejne cudzysłowy były traktowane jako jeden, a dane oddzielone spacją!

Aby uzyskać jeszcze szybszą linię kodu, moglibyśmy pominąć nazwy parametrów, ale wtedy musielibyśmy wstawić przecinki, aby zapisać miejsce parametru. Wystarczy, że wprowadzisz informacje do ostatniego używanego parametru - w tym przypadku spacji oddzielającej dane, która jest ósmym parametrem.

123 PodtekstDoKolumny3()Range("A1:A25").TextToColumns , xlDelimited, xlDoubleQuote, True, , , , TrueNapis końcowy

Po uruchomieniu dowolnej z powyższych procedur dane zostaną rozdzielone zgodnie z poniższą grafiką.

wave wave wave wave wave