fbpx

Power Query – przestawianie i łączenie wielu tekstów jednocześnie

03.12.2024 | Power Query

W tym artykule pokażę Ci, jak połączyć teksty z operacją przestawiania kolumn jednocześnie. Chodzi o coś takiego: 

Cel zadania

 

Czyli w wierszach mamy informacje o nazwach kolumn, jak również o wartościach, jakie powinny się w tych kolumnach znaleźć. I tych wartości może być więcej niż jedna… Wygląda BARDZO skomplikowanie, ale na szczęście dzięki Power Query można szybko poradzić sobie z tym problemem. Zaczynamy! 

1. Formatka: dane do zadania 

Mamy dany taką oto tabelę o nazwie tbProdukty 

Tabela tbProdukty

 

Zauważ, że w pierwszej kolumnie mamy id produktu. Do każdego produktu następnie jest przyporządkowany obszar, a do każdego obszaru – opisy. Obszarów dla jednego produktu zawsze jest kilka i zazwyczaj jest więcej niż jeden opis do obszaru. My chcemy każdy produkt mieć w osobnym wierszu i tyle kolumn co obszarów. W każdym obszarze zaś chcemy mieć połączone wszystkie opisy. 

2. Rozwiązanie: Power Query pivot (kolumna przestawna) 

Rozwiązaniem tutaj będzie wypisz wymaluj Power Query, a konkretnie funkcjonalność pivotowania kolumn (tzw. kolumna przestawna). 

Już mówię, o co chodzi, tylko najpierw załadujmy tabelę do Power Query: najprościej z menu Dane → Z tabeli/zakresu: 

Dane w Power Query

 

Teraz zaznacz kolumnę Obszar (ponieważ to z niej mają zostać utworzone nagłówki przyszłych kolumn) i wybierz Przekształć → Kolumna przestawna: 

Tworzenie kolumny przestawnej

 

Po zatwierdzeniu otrzymamy coś takiego…: 

Błędy kolumny przestawnej

 

… czyli mnóstwo błędów. 

Zauważ, że te błędy pojawiły się dlatego, że kolumna przestawna nie umie połączyć wielu tekstów w jedno. Jedyną sytuacją, gdzie nie ma błędu, jest dla produktu 2, obszar: Zalety i korzyści → Wodoodporny. Stało się tak dlatego, że jest to jedyny wpis, który był jedyną wartością w tymże obszarze. 

Aby więc uzyskać poprawne wyniki, musimy nieco zmodyfikować formułę, która została automatycznie wygenerowana przez Power Query. Chodzi mi konkretnie o funkcję pivotującą Table.Pivot. 

Dopiszemy do niej czwarty argument, jakim jest funkcja używana przy pivotowaniu. Będzie nią funkcja Text.Combine, a konkretnie to: 

each Text.Combine(_, ", ") 

Powyższe połączy wszystkie opisy w jeden wpis, rozdzielając je przecinkiem i spacją. 

Oto cała formuła: 

= Table.Pivot(#"Zmieniono typ", List.Distinct(#"Zmieniono typ"[Obszar]), "Obszar", "Opis", each Text.Combine(_, ", ")) 

Efekt wszystkiego jest następujący: 

WYNIK kolumny przestawnej

 

Po załadowaniu tego do Excela otrzymamy piękną tabelkę z wynikami, o jakie nam chodziło: 

WYNIK w Excelu

 

I voila, gotowe! 

Podobało się? 


Plik do pobrania:

https://malinowyexcel.pl/wp-content/uploads/2024/12/MalinowyExcel-PQ-Pivot-tekstu-DW.xlsx

 

I film na Youtubie, gdzie pokazuję powyższe rozwiązanie:

 

 

 

Jeżeli chcesz lepiej poznać Power Query zapisz się na listę zainteresowanych kursem Power Query w Excelu od podstaw! Podczas oczekiwania na kurs będę Ci wysyłała informacje i ciekawostki na temat Power Query. Bezpłatnie! 

Pomogłam Ci? Postaw mi wirtualną kawę! →

Przeczytaj podobne wpisy

Kategorie

0 komentarzy

Wyślij komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *