0
0 Produkty w koszyku

No products in the cart.

Jak pobrać wartość z komórki Excela do zapytania PowerQuery #10

Naszym zadaniem na dziś jest pobranie wartości z komórki Excela jako warunek do zapytania PowerQuery. Bezpośrednio nie jest to możliwe, ale można pobrać dane z tabeli, a później wyszczególnić komórkę, którą nam chodzi.
Mamy przygotowaną tabelę z prostymi warunkami – chcemy ograniczyć wyniki zapytania do tylko tych wskazanych w tabeli z warunkami. 

PQ 10 - Jak pobierać wartość z Excela do PowerQuery 01

Mamy na to dwa podstawowe sposoby – albo będziemy pobierać wynik jednego zapytania do drugiego zapytania, albo dołożyć odpowiedni kod M do głównego zapytania.

Zaczniemy od prostszego sposobu odwoływania się do wyników zapytań. W pierwszej kolejności pobierzemy dane z tabeli warunków (standardowo za pomocą polecenia PowerQuery z tabeli).

Nie będzie nam potrzebny krok Zmieniania typów (domyślnie dodawany przez PowerQuery), więc go usuwamy. Następnie będziemy potrzebować zduplikować zapytanie, czyli rozwijamy listę zapytań z lewej strony edytora zapytań i klikamy prawym przyciskiem na zapytanie, a następnie wybieramy opcję Duplikuj z listy rozwijanej (możemy jeszcze ewentualnie zmienić nazwę zapytania na takie, które się nam bardziej podoba 😉 ).

PQ 10 - Jak pobierać wartość z Excela do PowerQuery 02

Następnie potrzebujemy wyszczególnić interesujące nas warunki, czyli klikamy prawym przyciskiem myszy na komórkę, która nas interesuje i wybieramy odpowiednią opcję z podręcznego menu.

PQ 10 - Jak pobierać wartość z Excela do PowerQuery 03

Dla obu zapytań wykonujmy analogiczne przejście do szczegółów i możemy po nim zauważyć, że nasze zapytania przestają mieć formę tabeli – zmieniają się na wartość.

PQ 10 - Jak pobierać wartość z Excela do PowerQuery 04

Przy tym kroku ważne jest to, że PowerQuery ma indeksowanie (liczenie wierszy) od zera (pamiętaj o zaznaczeniu checkboxa Pasek formuły na karcie Widok). Przykładowo (rys. 4) wyszczegółowiliśmy wartość Ciasteczka, która znajdują się w pierwszym wierszu ({0}) kolumny Produktu kroku Źródło – zostało to zapisane za pomocą formuły.

Potrzebujemy nasze zapytania załadować nasze zapytania tylko do pamięci PowerQUery, więc rozwijamy polecenie Załaduj do i wybieramy odpowiednie opcje.

Teraz pobieramy do nowego zapytania dane z tabeli, którą będziemy chcieli filtrować. Potrzebujemy poprawić domyślny krok Zmieniono typ, ponieważ PowerQuery, źle rozpoznał typ danych dla kolumny Data (wybrał Data i czas, zamiast samej daty). Najprościej kliknąć ikonkę w nagłówku kolumny lewym przyciskiem myszy i wybrać odpowiedni typ z podręcznego menu.

PQ 10 - Jak pobierać wartość z Excela do PowerQuery 05

Teraz filtrujemy kolumnę Sprzedawca po dowolnym sprzedawcy (np.: po Janie).

PQ 10 - Jak pobierać wartość z Excela do PowerQuery 06

W stworzonej formule (patrz pasek formuły dla kroku filtrowania):

= Table.SelectRows(#"Zmieniono typ", each ([Sprzedawca] = "Jan"))

Potrzebujemy zmienić wartość wpisaną na stałe ("Jan") na odwołanie do odpowiedniego zapytania – wystarczy wstawić w formule jego nazwę (pamiętając o tym, że PowerQuery zwraca uwagę na wielkość liter):

= Table.SelectRows(#"Zmieniono typ", each ([Sprzedawca] = tWarunki))

PQ 10 - Jak pobierać wartość z Excela do PowerQuery 07

Analogicznie robimy dla drugiej kolumny – filtrujemy po dowolnym produkcie, a później podmieniamy wartość w formule na odwołanie do wyniku zapytania.

Potem możemy załadować zapytanie do arkusza Excela i zobaczyć, że jego wynik zmienia się w zależności od wartości w tabeli warunków.

PQ 10 - Jak pobierać wartość z Excela do PowerQuery 08

Chcemy jeszcze omówić rozwiązanie, które bardziej modyfikuje język M (w pierwszym modyfikowaliśmy tylko pojedyncze formuły). Ponieważ nie zawsze chcemy generować tyle zapytań przechowujących warunku/parametry, które wykorzystujemy.

Musimy wrócić do edytora zapytań (np.: edytując załadowane przez nas zapytanie).Będziemy je chcieli zduplikować (rys. 2).
Teraz potrzebujemy zobaczyć cały kod języka M dla jednego z zapytań pobierających warunki. Zaznaczamy je i z karty Narzędzia główne wybieramy Edytor zaawansowany.

PQ 10 - Jak pobierać wartość z Excela do PowerQuery 09

Zobaczymy tam kod wszystkich kroków zapytania. Standardowo zapytanie rozpoczyna słowo kluczowe let. Każda linijka zakończona przecinkiem, to krok zapytania. Tylko ostatni krok nie jest zakończony przecinkiem. Po nim pojawia się słowo kluczowe in i nazwa kroku, które zwraca zapytanie. Domyślnie kolejny krok odwołuje się do wyniku wcześniejszego kroku przez jego nazwę.

let
Źródło = Excel.CurrentWorkbook(){[Name="tWarunki"]}[Content],
Sprzedawca = Źródło{0}[Sprzedawca]
in
Sprzedawca

PQ 10 - Jak pobierać wartość z Excela do PowerQuery 10

Potrzebujemy stąd (rys. 10) skopiować kod 2 kroków. Następnie przechodzimy do edytora zaawansowanego nowego zapytania filtrującego dane. Wklejamy te dwie linijki zaraz po słowie kluczowym let, a dodatkowo przed i po dodajemy po dwa slashe (//), żeby wyróżnić ten fragment kodu (służą one jako znaczniki komentarza).


let
//
Źródło = Excel.CurrentWorkbook(){[Name="tWarunki"]}[Content],
Sprzedawca = Źródło{0}[Sprzedawca]
//
Źródło = Excel.CurrentWorkbook(){[Name="tProdukty"]}[Content],
#"Zmieniono typ" = Table.TransformColumnTypes(Źródło,{{"Data", type date}, {"Sprzedawca", type text}, {"Produkt", type text}}),
#"Przefiltrowano wiersze" = Table.SelectRows(#"Zmieniono typ", each ([Sprzedawca] = tWarunki)),
#"Przefiltrowano wiersze1" = Table.SelectRows(#"Przefiltrowano wiersze", each ([Produkt] = tWarunki2))
in
#"Przefiltrowano wiersze1"

PQ 10 - Jak pobierać wartość z Excela do PowerQuery 11

PowerQuery od razu nas informuje, że nasze zapytanie jest błędne. Po pierwsze brakuje przecinka na końcu 2 kroku, ale poważniejszym błędem jest to, że dwa kroki mają taką samą nazwę (Źródło). Załóżmy, że nazwę pierwszego kroku zmienimy na ‘Warunki’, co spowoduje, że będziemy musieli skorygować drugi krok, żeby odwoływał się do wyniku pierwszego kroku, a nie 3. Zmienimy też nazwę 2 kroku ze ‘Sprzedawca’ (czyli pierwszy wyraz w drugim kroku. Zapis ‘[Sprzedawca]’ to odwołanie do nazwy kolumny) na ‘Warunek1’. Musimy jeszcze zmienić krok #"Przefiltrowano wiersze" (jego nazwa jest w podwójnych cudzysłowach (") i poprzedzona hashem (#) ponieważ zawiera nietypowy znak – spację), żeby odwoływał się do kroku ‘Warunek1’, a nie do wyniku zapytania tWarunki (wystarczy zamienić nazwę). 

Uff. Jeśli pierwszy raz modyfikuje język M w edytorze zaawansowanym, to była ciężka przeprawa, ale Twój kod powinien teraz wyglądać tak:

let
//
Warunki = Excel.CurrentWorkbook(){[Name="tWarunki"]}[Content],
Warunek1 = Źródło{0}[Sprzedawca],
//
Źródło = Excel.CurrentWorkbook(){[Name="tProdukty"]}[Content],
#"Zmieniono typ" = Table.TransformColumnTypes(Źródło,{{"Data", type date}, {"Sprzedawca", type text}, {"Produkt", type text}}),
#"Przefiltrowano wiersze" = Table.SelectRows(#"Zmieniono typ", each ([Sprzedawca] = Warunek1)),
#"Przefiltrowano wiersze1" = Table.SelectRows(#"Przefiltrowano wiersze", each ([Produkt] = tWarunki2))
in
#"Przefiltrowano wiersze1"

PQ 10 - Jak pobierać wartość z Excela do PowerQuery 12

Wpisany kod po zatwierdzeniu przyciskiem gotowe powinien wygenerować odpowiednie kroki widoczne w edytorze zapytań (mylące jest dla nas to, że 2 krok wyświetla się jako ‘Nawigacja’, a nie ‘Warunek1’, ponieważ właśnie nazwy ‘Warunek1’ musimy używać, żeby prawidłowo pobrać parametr dla filtru).

PQ 10 - Jak pobierać wartość z Excela do PowerQuery 13

Ważne –napisany przez nas kod (zapytanie) będzie działać bez zapytania z pierwszym warunkiem. Żeby to sprawdzić potrzebujemy je skasować, czyli kliknąć prawym przyciskiem myszy i wybrać odpowiednie polecenie z podręcznego menu. PowerQuery nie powinien Ci pozwolić na usunięcie tego zapytanie, ponieważ w innym zapytaniu (tProdukty – tym od filtrowania, które zduplikowaliśmy, przed modyfikowaniem języka M). 

PQ 10 - Jak pobierać wartość z Excela do PowerQuery 14

Musimy je najpierw usunąć, a dopiero potem usunąć zapytanie pobierające warunek. Przy okazji możemy zobaczyć, że zarówno zapytanie odwołujące się do innych zapytań jak i to, któremu zmodyfikowaliśmy język M dają ten sam wynik. To, z którego sposobu skorzystasz zależy od Ciebie. Ogólnie jeśli nie pobierasz dużo warunków i masz mało zapytań w PowerQuery wygodniejsze jest odwoływanie się do wyników zapytań, niż modyfikacja języka M w edytorze zaawansowanym.

Jeśli chcesz możesz wczytać zapytanie do Excela (ewentualnie zmodyfikować kod M, pod 2 warunek filtrowania).
Ponieważ usunęliśmy wcześniej załadowane zapytanie, przestanie się ono aktualizować, gdy będziemy odświeżać wszystkie zapytanie, ponieważ stało się teraz zwykłą tabelą (pozostałością, po ostatnim odświeżeniu zapytania)

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

Power Query #23 — Tabela pomocnicza przefiltrowana z tabeli głównej

W dzisiejszym poście zajmiemy się tworzeniem tabeli pomocniczej przefiltrowanej z tabeli głównej. Taki sam temat został omówiony w pytaniu od widzów nr 25, gdzie wyciągaliśmy interesujące nas informacje z tabeli głównej na podstawie jakiegoś kryterium i z tych informacji tworzyliśmy tabelę pomocniczą. Zagadnienie to omówimy na podstawie przykładowych danych z rysunku nr 1.

rys. nr 1 — Przykładowe dane

W pytaniu od widzów nr 25 do rozwiązania problemu wykorzystywaliśmy skomplikowaną formułę tablicową. W tym poście omówimy rozwiązanie w dodatku do Excela — Power Query, w którym to zadanie jest bardzo szybkie i proste. Warunkiem szybkiego rozwiązania tego zadania jest to, że kryterium według którego będziemy wyciągać dane, nie może się często zmieniać i nie powinno być skomplikowane. W naszym przykładzie wyciągniemy z tabeli głównej dane według kryterium nazwy fabryki – Żuczek. Załóżmy że mamy tabelę główną z danymi sprzedażowymi (rys. nr 2).

rys. nr 2 — Dane sprzedażowe

Pierwszym krokiem jest zaczytanie danych do Power Query. W tym celu korzystamy z polecenia Z tabeli (punkt nr 2 na rysunku nr 3) z karty Dane.

rys. nr 3 — Z tabeli

Otworzy nam się Edytor zapytań z wczytaną tabelą tMain przedstawioną na rysunku nr 4.

rys. nr 4 — tMain

Aby uzyskać tabelę zawierającą tylko dane z fabryki Żuczek, możemy sobie nałożyć na nasza tabelę główną filtr. Klikamy na ikonkę trójkącika (Zaznaczony strzałką na rysunku nr 5) w rogu tytułu kolumny Fabryka i w podręcznym menu zaznaczamy filtr Żuczek (zaznaczony zielonym kwadratem na rysunku nr 5). Nasz wybór zatwierdzamy klikając przycisk OK.

rys. nr 5 — Filtry

Otrzymamy przefiltrowane dane, które możemy wczytać do Excela za pomocą polecenia Zamknij i załaduj do (punkt nr 2 na rysunku nr 6) z karty Narzędzia główne.

rys. nr 6 — Zamknij i załaduj do

Otworzy nam się w Excelu okno Ładowanie do, gdzie możemy ustawić parametry wczytywanych danych. Wybieramy sposób wyświetlania danych jako Tabela (punkt nr 1 na rysunku nr 7), następnie lokalizację wstawienia danych – Istniejący arkusz i wskazujemy konkretną komórkę (punkt nr 2 na rysunku nr 7). Nasze ustawienia zatwierdzamy klikając przycisk Załaduj.

rys. nr 7 — Okno Ładowanie do

Otrzymujemy wczytane dane spełniające kryterium jakie ustawiliśmy, czyli fabrykę Żuczek przedstawione na rysunku nr 8.

rys. nr 8 — Wczytane dane do Excela

Jeśli dołożymy sobie dane do naszej tabeli głównej, wystarczy że klikniemy na dowolną komórkę w obszarze tabeli pomocniczej zaczytanej z Power Query prawym przyciskiem myszy i z podręcznego menu wybierzemy polecenie Odśwież (rys. nr 9), a otrzymamy aktualne dane.

rys. nr 9 — Odświeżanie danych

Możemy również użyć poleceń Odśwież lub Odśwież wszystko z karty Dane (rys. nr 10). 

rys. nr 10 — Odśwież wszystko

Kiedy mamy stałe warunki naszych filtrów zadanie to jest bardzo proste, natomiast jeśli potrzebujemy bardziej skomplikowanych kryteriów polecam odcinek Power Query #10 https://exceliadam.pl/?s=power+query+%2310 . Dodatkową zaletą użycia Power Query jest to, że dane mogą być zapisane w różnych miejscach (strony internetowe, baza danych lub nawet połączonych ze sobą wiele plików), natomiast przy formułach tablicowych musimy mieć wszystkie dane w jednym miejscu.


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

Książka Mistrz Excela reklama