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ą.