0
0 Produkty w koszyku

No products in the cart.

W tym poście zajmiemy się dzielenie tekstu za pomocą ciągu kolejnych ograniczników. W naszym przykładzie zakładamy, że najpierw dane chcemy podzielić (stworzyć podział na kolumny), gdy znajdziemy pierwszy średnik, potem przecinek i dalej zgodnie z układem danych (kolejne separatory to średnik, przecinek, pionowa linia i spacja).

Power Query 15 - Podział tekstu ciągiem kolejnych ograniczników (separatorów) - 01

Ważne, że ten podział działa jako ciąg, czyli najpierw znajdowany jest średnik (w tym miejscu wstawiany jest pierwszy podział na kolumny). Później od miejsca znalezionego średnika jest szukany przykładowy przecinek (kolejny podział na kolumny), a potem kolejne znaki, które wstawimy.

Standardowo zaczytujemy dane do Power Query i pozbywamy się kroków związanych ze zmianą typu danych w kolumnach. Kolejnym krokiem będzie wstawienie podziału kolumny po ograniczniku.

Power Query 15 - Podział tekstu ciągiem kolejnych ograniczników (separatorów) - 02

Pierwszy podział chcemy zrobić po średnik najbardziej z lewej strony.

Power Query 15 - Podział tekstu ciągiem kolejnych ograniczników (separatorów) - 03

Oczywiście to nie wszystkie podziały bo w sumie mamy 4 ograniczniki (separatory). Moglibyśmy zrobić analogiczną operację na kolejno rozdzielanych kolumnach, ale możemy zrobić to szybciej w jednym kroku, wystarczy, że mamy włączony pasek formuły w Power Query (karta Widok odpowiedni checkbox). Wtedy widzimy jako formuła (funkcja języka M została użyta do podziału na 2 kolumny po pierwszy ograniczniku (średniku). Została użyta funkcja 

Splitter.SplitTextByEachDelimiter

Power Query 15 - Podział tekstu ciągiem kolejnych ograniczników (separatorów) - 04

której możemy podać po kolei (w ciągu) kolejne ograniczniki (separatory) i później odpowiednio nadać nazwy kolumną, czyli formuła po zmianach powinna wyglądać tak:

= Table.SplitColumn(Źródło, "Dane", Splitter.SplitTextByEachDelimiter({";", ",", "|", " "}, QuoteStyle.Csv, false), {"Imię i Nazwisko", "Miejsce urodzenia", "Adres", "Kod pocztowy", "Miasto"})

Power Query 15 - Podział tekstu ciągiem kolejnych ograniczników (separatorów) - 05

Zauważ, że w danych specjalnie zostały popełnione błędy. Dlatego podział robi się niepoprawnie, bo Power Query musi znaleźć ograniczniki (separatory) w ciągu (w ustalonej kolejności) jeśli nie znajdzie kolejnego ogranicznika (separatora) z ciągu nie będzie szukał kolejnego, czyli nie wstawi podziału na kolumny i pojawią się puste kolumny (wypełnione wartościami 'null'). Na szczęście jeśli poprawimy dane to nasze zapytanie poprawi wynik po jego odświeżeniu.

Można zauważyć, że w niektórych kolumnach mamy spacja na początku danych. Żeby je usunąć wystarczy dodać spacja jako tekst ogranicznika (ogranicznik/separator może być więcej niż 1 znakiem).

Prawidłowy wynik końcowy (wgrany do Excela) powinien wyglądać tak:

Power Query 15 - Podział tekstu ciągiem kolejnych ograniczników (separatorów) - 06

Pozdrawiam
Adam Kopeć
Miłośnik Excela
Microsoft MVP