W dzisiejszym poście omówimy rozwiązanie wyzwania nr 4 Kena Pulsa (Power Query Challenge 4) https://www.excelguru.ca/blog/2018/11/29/power-query-challenge‑4/ . Zadaje on czasem takie pytania do społeczności. Problem w tym zadaniu polega na tym, że mamy w danych wejściowych dwie tabele, w których pierwszy wiersz jest wierszem nagłówkowym, ale nie do końca ponieważ chcemy aby pierwsza kolumna nadal nazywała się Name (rys. nr 1).

rys. nr 1 - Przykładowe dane
rys. nr 1 — Przykładowe dane

Jeśli już działaliście w Power Query to pewnie zdajecie sobie sprawę, że jest to problem. Podwyższenie nagłówków, czyli standardowa opcja, gdzie zastępujemy nagłówki pierwszym wierszem z danych, zniszczy nam nazwę pierwszej kolumny.

Mamy już zaczytane tabele do Power Query, więc klikamy na zapytanie Admin, które jest tylko połączeniem w panelu bocznym Zapytania i połączenia (rys. nr 2).

rys. nr 2 - Lista zapytań w panelu bocznym Zapytania i połączenia w Excelu
rys. nr 2 — Lista zapytań w panelu bocznym Zapytania i połączenia w Excelu

Otworzy nam się Edytor zapytań z wczytanymi 3 tabelami (Admin, Sales oraz MakeMyHeaders), przy czym trzecia tabela odwołuje się do tabeli Admin (rys. nr 3).

rys. nr 3 - Edytor zapytań Power Query z trzema tabelami
rys. nr 3 — Edytor zapytań Power Query z trzema tabelami

Nasze zadanie polega na zmianie nagłówków. Zmieniamy odwołanie do w trzeciej tabeli na tabelę Sales, a następnie klikamy na ikonę tabelki w lewym rogu i z podręcznego menu wybieramy polecenie Użyj pierwszego wiersza jako nagłówków (rys. nr 4).

rys. nr 4 - polecenie Użyj pierwszego wiersza jako nagłówków
rys. nr 4 — polecenie Użyj pierwszego wiersza jako nagłówków

Otrzymamy tabelę przedstawioną na rys. nr 5. Możemy zauważyć, że cały pierwszy wiersz został przeniesiony do nagłówków, a nam zależało aby nazwa pierwszej kolumny (wcześniej Name) pozostała bez zmian.

rys. nr 5 - Dane, w których cały pierwszy wiersz został przeniesiony do nagłówków
rys. nr 5 — Dane, w których cały pierwszy wiersz został przeniesiony do nagłówków

Możemy zmienić tą nazwę ręcznie, ale zostanie wtedy dodany kolejny krok w Zastosowanych krokach. Zauważmy, że Power Query wstawi wtedy standardowe polecenie, które możemy podejrzeć w pasku formuły (rys. nr 6).

rys. nr 6 - polecenie zmiany nazwy nagłówka w pasku formuły
rys. nr 6 — polecenie zmiany nazwy nagłówka w pasku formuły

W tym działaniu Power Query odwołuje się konkretnie do nazw kolumn, w związku z tym, kiedy zmienimy nasze źródło początkowe w kroku Source w pasku formuły z Sales na Admin to nasze kroki odnoszące się do konkretnej kolumny przestaną działać i otrzymamy błąd. Dzieję się tak dlatego, że w danych nie mamy kolumny Sales (rys. nr 7).

rys. nr 7 - Błąd wynikający z braku podanej nazwy, po zmianie odwołania tabeli MakeMyHeaders
rys. nr 7 — Błąd wynikający z braku podanej nazwy, po zmianie odwołania tabeli MakeMyHeaders

Wracamy do odwołania tabeli MakeMyHeaders do tabeli Sales. W zastosowanych krokach zmieniamy kolejność kroków, mianowicie chcemy aby krok Zmieniono nazwy kolumn był przed krokiem Zmieniono typ. W tym celu przenosimy ręcznie krok Zmieniono nazwy kolumn o jedno miejsce w górę (rys. nr 8).

rys. nr 8 - ręczna zmiana położenia kroku Zmieniono nazwy kolumn
rys. nr 8 — ręczna zmiana położenia kroku Zmieniono nazwy kolumn

W kroku Zmieniono Typ otrzymamy błąd ponieważ Power Query chce zmienić typ danych w kolumnie Sales, a takiej kolumny nie mamy (rys. nr 9).

rys. nr 9 - Błąd w kroku Zmieniono typ, wynikający z przesunięcia kroku Zmieniono nazwy kolumn
rys. nr 9 — Błąd w kroku Zmieniono typ, wynikający z przesunięcia kroku Zmieniono nazwy kolumn

Możemy zmienić w pasku formuły odwołanie do kolumny Sales na kolumnę Name i wtedy formuła zadziała (rys. nr 10).

rys. nr 10 - Zmiana nazwy kolumny w pasku formuły
rys. nr 10 — Zmiana nazwy kolumny w pasku formuły

Naszym celem jest rozwiązanie zadania tak, aby przy zmianie źródła danych (tabela Sales lub Admin) formuły działały prawidłowo.

Rozwiązanie, które zostało zaproponowane przez kilka osób polegało na tym, żeby odwołać się do kroku źródła i wyszczególnić informację z pierwszego wiersza kolumny Name. W tym celu musimy kliknąć prawym przyciskiem myszki na komórkę w pierwszym wierszu kolumny Name a następnie z podręcznego menu wybrać polecenie Wyszczególnij (rys. nr 11).

rys. nr 11 - polecenie Wyszczególnij w podręcznym menu
rys. nr 11 — polecenie Wyszczególnij w podręcznym menu

Otworzy nam się okno Kroku nawigacji, w którym zatwierdzamy operację przyciskiem Kontynuuj (rys. nr 12).

rys. nr 12 - okno Kroku nawigacji
rys. nr 12 — okno Kroku nawigacji

Gdybyście chcieli uzyskać więcej informacji na temat wyszczegóławiania to jest ona dostępna w jednym z filmów pod tytułem Wyszczegóławianie informacji w moim kursie Mistrz Power Query w Excelu. Jest to jeden z filmów, które są udostępnianie za darmo na stronie https://www.udemy.com/course/mistrz-power-query/learn/?couponCode=PQ.START2019 (rys. nr 13).

rys. nr 13 - część kursu dostępna za darmo w Mistrz Power Query w Excelu
rys. nr 13 — część kursu dostępna za darmo w Mistrz Power Query w Excelu

Tutaj pokażemy rozwiązanie na krokach, które już stworzyliśmy. Przechodzimy do kroku Zmieniono nazwy kolumn, gdzie musimy wyszczegółowić tą informację. W pasku formuły zamiast odwołania do konkretnej nazwy Sales, musimy odwołać się do kroku źródło (source) i do pierwszego wiersza, któremu przypisana jest wartość zero zapisana w nawiasach klamrowych (pierwszy wiersz ma indeks 0), następnie w nawiasach kwadratowych odwołać się do nazwy kolumny (rys. nr 14). Zapis formuły powinien wyglądać następująco:

=Table.RenameColumns(#"Nagłówki o podwyższonym poziomie", {{Source{0}[Name], "Name"}})

rys. nr 14 - zapis formuły do odwołania się bezpośrednio do źródła (source)
rys. nr 14 — zapis formuły do odwołania się bezpośrednio do źródła (source)

Dzięki powyższym zmianom w formule nasza tabela stanie się dynamiczna. Działania te wykonywaliśmy na źródle Sales, więc teraz możemy łatwo sprawdzić poprawność działania formuł poprzez zmianę źródła na tabelę Admin (rys. nr 15).

rys. nr 15 - dynamiczna tabela
rys. nr 15 — dynamiczna tabela

Na rysunku powyżej widać, że wszystkie formuły działają prawidłowo dla obu tabel (Sales i Admin). Podsumowując, dzięki prostej sztuczce odwołania się do konkretnej komórki stworzyliśmy dynamiczne rozwiązanie.

Możemy stworzyć jeszcze bardziej dynamiczne rozwiązanie dopisując funkcję w kodzie M. W tym celu wybieramy polecenie Edytor zaawansowany z karty Narzędzia główne (rys. nr 16).

rys. nr 16 - polecenie Edytor zaawansowany z karty Narzędzia główne
rys. nr 16 — polecenie Edytor zaawansowany z karty Narzędzia główne

Otworzy nam się Edytor zaawansowany, gdzie z naszego zapytania stworzymy funkcję. W tym celu musimy dopisać pierwszą linijkę w edytorze zaawansowanym. Zapis powinien wyglądać następująco:

(Tabela as table) as table =>

Wprowadzone w edytorze zaawansowanym zmiany zatwierdzamy przyciskiem Gotowe (rys. nr 17).

rys. nr 17 - zapis funkcji w Edytorze zaawansowanym
rys. nr 17 — zapis funkcji w Edytorze zaawansowanym

Stworzyliśmy funkcję dodając odpowiednią linijkę na początku (rys. nr 18).

rys. nr 18 - stworzona funkcja
rys. nr 18 — stworzona funkcja

W polu Wprowadź parametr możemy sobie wybrać do której tabeli chcemy się odwołać (rys. nr 19).

rys. nr 19 - odwołanie do tabeli w polu Wprowadź parametry
rys. nr 19 — odwołanie do tabeli w polu Wprowadź parametry

Po wybraniu odpowiedniej tabeli (np. Admin) naszą decyzję zatwierdzamy przyciskiem Wywołaj. Otrzymamy wywołaną tabelę (rys. nr 20).

rys. nr 20 - wywołana tabela Admin
rys. nr 20 — wywołana tabela Admin

Analogicznie możemy wywołać funkcję dla tabeli Sales i otrzymamy wtedy wynik przedstawiony na rys. nr 21.

rys. nr 21 - analogicznie wywołana tabela Sales
rys. nr 21 — analogicznie wywołana tabela Sales

Nie dopatrzyliśmy jednej rzeczy, mianowicie jak podajemy funkcji argument to musimy go potem użyć, ponieważ w formule mamy na stałe wpisany Admin a powinniśmy zmienić na Tabela w Edytorze zaawansowanym (miejsce pokazane strzałką na rys. nr 22).

rys. nr 22 - zmiany w edytorze zaawansowanym
rys. nr 22 — zmiany w edytorze zaawansowanym

Teraz po wywołaniu funkcji dla tabeli Sales otrzymamy prawidłowy wynik (rys. nr 23).

rys. nr 23 - wywołana tabela Sales
rys. nr 23 — wywołana tabela Sales

Dzięki powyższym operacjom otrzymaliśmy dynamiczny szablon rozwiązania naszego problemu.


Książka Mistrz Excela reklama

Książka Mistrz Excela + promo na 35 urodziny

Chcę Cię poinformować, że w końcu udało mi zebrać środki i dopiąć wszystkich formalności, żeby powstało II wydanie mojej książki Mistrz Excela (zostałem wydawcą)
II wydanie jest wzbogacone o rozdział (nr 22) wprowadzający w genialny dodatek (Power Query) do Excela służący do pobierania, łączenia i wstępnej obróbki danych z wielu źródeł.

Książka Mistrz Excela to historia Roberta, który musi poznać dobrze Excela na potrzeby nowej pracy. Książka jest napisana w formie rozmów Roberta z trenerem, dzięki temu jest przystępniejsza w odbiorze niż standardowe książki techniczne pisane językiem "wykładowym".

Rozmowy zostały podzielone na 22 tematyczne rozdziały, które krok po kroku wprowadzają Cię w tajniki Excela. Robert zaczyna naukę od poznania ciekawych aspektów sortowania i filtrowania danych w Excelu, przechodzi przez formatowanie warunkowe, tabele przestawne, funkcje wyszukujące i wiele innych tematów, by na koniec poznać wstępne informacje o VBA i Power Query.
A wszystko to na praktycznych przykładach i z dużą ilością zdjęć.

Żebyś mógł śledzić postępy Roberta, do książki dołączone są pliki Excela, na których pracuje Robert.

Aktualnie w promocji urodzinowej możesz mieć Mistrza Excela w obniżonej cenie, jeśli tylko wpiszesz kod 35URODZINY
https://exceliadam.pl/produkt/ksiazka-mistrz-excela

Na powyższej stronie znajdziesz dokładniejszy opis książki, opinie osób, które kupiły I wydanie oraz podgląd pierwszego rozdziału książki, żeby upewnić się, czy forma rozmów przy nauce Excela jest dla Ciebie.
Jeśli książka Ci się spodoba poinformuj o niej swoich znajomych.

W ramach promocji na moje 35 urodziny możesz też mieć każdy z moich kursów wideo na Udemy za zaledwie 35 zł. Linki do kursów zamieszczam poniżej. W każdym kursie są udostępnione filmy do podglądu, byś mógł się przekonać czy dany kurs jest dla Ciebie.

Power Query
https://www.udemy.com/course/mistrz-power-query/?couponCode=35URODZINY

Mistrz Excela
https://www.udemy.com/mistrz-excela/?couponCode=35URODZINY

Dashboardy
https://www.udemy.com/course/excel-dashboardy/?couponCode=35URODZINY

Mistrz Formuł
https://www.udemy.com/course/excel-mistrz-formul/?couponCode=35URODZINY

VBA
https://www.udemy.com/course/excel-vba-makra/?couponCode=35URODZINY

Microsoft Power BI
https://www.udemy.com/course/power-bi-microsoft/?couponCode=35URODZINY