0
0 Produkty w koszyku

No products in the cart.

Power Query 54 — Matura z informatyki 2018 — Cykl pracy zbiornika zad 5.4

W dzisiejszym poście będziemy kontynuować rozwiązywanie zadań z Matury z informatyki 2018. Dziś rozwiążemy zadanie nr 5.4 w Power Query. Rozwiązanie tego zadania pomogł mi znaleźć Bill Szysz. Był on w stanie rozwiązać całe zadanie w jednym zapytaniu, lecz okazało się to bardzo skomplikowane. W jego rozwiązaniu część zadania wykonano w Power Query a wyciągnięcie samych wyników nastąpiło w Excelu. Nam zależy aby całe zadanie rozwiązać w Power Query. Rozbijemy zadanie na kilka zapytań, aby łatwiej znaleźć rozwiązanie.

Zadanie nr 5.4 opiera się o cykl pracy zbiornika retencyjnego. W pierwszym kroku zaczytamy dane z tabeli w Excelu. Wybieramy polecenie Z tabeli/ zakresu z karty Dane (rys. nr 1). 

rys. nr 1 - polecenie Z tabeli/zakresu
rys. nr 1 — polecenie Z tabeli/zakresu

Otworzy nam się Edytor zapytań Power Query z wczytanymi danymi z tabeli przedstawiony na rys. nr 2.

rys. nr 2 - Edytor zapytań Power Query z wczytanymi danymi
rys. nr 2 — Edytor zapytań Power Query z wczytanymi danymi

Dane te musimy odpowiednio przekształcić. W pierwszym kroku musimy zmienić typ danych, możemy to zrobić usuwając słowo time z formuły w pasku formuły (zaznaczone na niebiesko na rys. nr 3). Power Query automatycznie wybrał typ danych data i czas, a nam czas nie jest potrzebny, interesuje nas tylko data.

rys. nr 3 - Zmiana w formule - usunięcie czasu z daty
rys. nr 3 — Zmiana w formule — usunięcie czasu z daty

Otrzymamy dane ze zmienionym typem danych w kolumnie Data przedstawione na rys. nr 4.

rys. nr 4 - zmieniony typ danych w kolumnie Data
rys. nr 4 — zmieniony typ danych w kolumnie Data

Nas interesuje tylko kolumna Woda m3. Klikamy prawym przyciskiem myszy na tytuł kolumny Woda m3 i z podręcznego menu wybieramy polecenie Usuń inne kolumny (rys. nr 5).

rys. nr 5 - polecenie Usuń inne kolumny
rys. nr 5 — polecenie Usuń inne kolumny

Jeśli skorzystamy z powyższego polecenia Power Query użyje funkcji Table.SelectColumn, która zwraca nam tabelę. Nasze zapytanie nazywa się tDane6, zmienimy jego nazwę w Ustawieniach zapytania na tWoda (rys. nr 6).

rys. nr 6 - zmiana nazwy zapytania w Ustawieniach zapytania
rys. nr 6 — zmiana nazwy zapytania w Ustawieniach zapytania

Ikonka przy nazwie zapytania oznaczona strzałką na rys. nr 7 wskazuje nam, że nasze dane mają formę tabeli.

rys. nr 7 - dane w formie tabeli
rys. nr 7 — dane w formie tabeli

My nie potrzebujemy tabeli, więc musimy zmienić użytą formułę, czyli zamiast funkcji Table.SelectColumns powinniśmy użyć funkcji Table.Column. Zapis formuły powinien wyglądać następująco:

=Table.Column (#"Zmieniono typ", "Woda m3")

Otrzymamy dane w postaci listy przedstawione na rys. nr 8.

rys. nr 8 - dane w postaci listy
rys. nr 8 — dane w postaci listy

Aby mieć pewność, że ta lista się zmieni, tzn. nie zmieni się kolejność elementów musimy dołożyć dodatkową funkcję o nazwie List.Buffer. Zapis formuły powinien wyglądać następująco:

=List.Buffer(Table.Column (#"Zmieniono typ", "Woda m3"))

Funkcja List.Buffer sprawia, że nasza lista nie ulegnie zmianie, tzn. że w tej liście mamy ilość wody wpływającej do zbiornika każdego kolejnego dnia i kolejność wpływów wody nie może ulec zmianie. Aby mieć jasne informacje, że dany krok odpowiada za przekształcenie danych z tabeli w listę, zmieniamy sobie nazwę kroku Usunięto inne kolumny na LWoda w Ustawieniach zapytania za pomocą klawisza F2 (rys. nr 9).

rys. nr 9 - zmiana nazwy kroku
rys. nr 9 — zmiana nazwy kroku

Zmieniamy nazwę kroku, ponieważ w późniejszym etapie będziemy się do niego odwoływać.

Kolejnym krokiem jest policzenie ilości wierszy w danych. Ze względu na to iż zmieniliśmy typ danych (nasze dane już nie są tabelą), nie możemy korzystać z operacji przekształcania danych na karcie Przekształć. Musimy dodać kolejny krok za pomocą ikonki fx przy pasku formuły, ponadto ten krok musimy napisać samodzielnie. Skorzystamy tutaj z funkcji Table.RowCount, pamiętając o użyciu odpowiedniej wielkości liter, ponieważ Power Query jest case sensitive. W funkcji tej musimy się odwołać do kroku, w którym mamy jeszcze cała tabelę, czyli u nas do kroku Zmieniono typ. Klikamy na nazwę kroku, przechodzimy do edycji nazwy kroku za pomocą klawisza F2 a następnie kopiujemy jego nazwę za pomocą skrótu klawiszowego Ctrl+C. Należy pamiętać, aby przed wklejeniem nazwy kroku wpisać znak hashtag (#) ponieważ w nazwie kroku występuje spacja. Zapis formuły powinien wyglądać następująco:

=Table.RowCount (#"Zmieniono typ")

Otrzymamy ilość wierszy w naszych danych przedstawioną na rys. nr 10.

rys. nr 10 - ilość wierszy w danych
rys. nr 10 — ilość wierszy w danych

Ilość wierszy będzie nam potrzebna do następnego, najtrudniejszego kroku, gdzie za pomocą funkcji List.Generate wyznaczymy listę rekordów. Funkcja ta ma 4 argumenty, więcej szczegółów na temat funkcji przedstawia rys. nr 11.

rys. nr 11 - informacje o funkcji List.Generate
rys. nr 11 — informacje o funkcji List.Generate

Pierwszym argumentem są wartości początkowe, czyli wartość z pierwszego wiersza, drugi argument to warunek, przy którym zatrzymujemy generowanie listy, a trzeci to sposób w jaki przekształcimy dane aby otrzymać kolejne wartości. Działanie funkcji wyjaśnimy na prostym przykładzie przedstawionym na rys. nr 12.

rys. nr 12 - przykładowe argumenty funkcji List.Generate
rys. nr 12 — przykładowe argumenty funkcji List.Generate

Zaczynami liczenie od wartości 10, czyli początkową wartością jest liczba 10. Pierwszy warunek jest taki, że wykonujemy obliczenia dopóki ta wartość jest większa od 0, drugi warunek to odjęcie wartości 1 na każdym kroku. Taka formuła funkcji generuje listę wartości od 10 do 1 (rys. nr 13).

rys. nr 13 - wynik działania przykładowej funkcji z rysunku powyżej
rys. nr 13 — wynik działania przykładowej funkcji z rysunku powyżej

W naszym zadaniu będziemy korzystać z dużo bardziej skomplikowanej formuły, ponieważ musimy wygenerować dużo więcej danych, które muszą spełnić określone warunki (rys. nr 14).

rys. nr 14 - zapis funkcji do zadania 5.4
rys. nr 14 — zapis funkcji do zadania 5.4

Pierwsze dwie linijki formuły z rysunku nr 14 to pierwszy argument funkcji, czyli wartości początkowe. Zapis w nawiasach kwadratowych oznacza, że mamy do czynienia z rekordem. Odwołujemy się do poszczególnych kolumn, najpierw do kolumny Data (początkowa data to 31.12.2007), której odpowiada wartość z kolumny Woda m3, czyli wartość 0 dla tej daty. Stan= 500000 to stan wody w zbiorniku na początku obliczeń. W danych do zadania mamy informację, że należy wylać ze zbiornika 2% stanu wody z dnia mierzenia, stąd wartość Wylać=10000. Są to podstawowe kolumny, których potrzebujemy. Druga linijka (wartości _2) to informacje do rozwiązania trzeciego podpunktu zadania 5.4 z matury z informatyki. Wartość i jest wartością pomocniczą, zliczającą w którym aktualnie jesteśmy wierszu. Zapis formuły powinien wyglądać następująco:

=List.Generate (()=> [Date=#date(2007,12,31), #Woda m3=0, Stan=500000, Wylać=10000, Stan_2=Stan, Wylać_2=Wylać, I=0]

Musimy zmienić nazwę kroku Niestandardowe 1, w którym obliczaliśmy ilość wierszy, na RowCount (Ustawienia zapytania) – rys. nr 15.

rys. nr 15 - zmiana nazwy kroku
rys. nr 15 — zmiana nazwy kroku

Jest to warunek, że tworzymy listę dopóki nie wygenerujemy wszystkich wartości z kroku RowCount, czyli wszystkich dni. Ma zostać spełniony warunek, że i jest mniejsze od ilości wierszy +1. Jest to nasz drugi argument funkcji. Warunek powinien wyglądać następująco:

each [i] < RowCount+1

Trzeci argument funkcji obejmuje wszystkie obliczenia jakie musimy wykonać w zadaniu. W kolejnym kroku wartość z kolumny Date jest równa wartości z kolumny Date z poprzedniego wiersza powiększona o 1. Korzystamy tutaj z funkcji Date.AddDays, czyli dodajemy dni do wiersza powyżej. Wartość w kolumnie Woda m3 jest równa wartości z kroku LWoda dla określonego wiersza i. Stan wody jest równy stanowi wody z wcześniejszego kroku pomniejszony o ilość wody, którą należało wylać oraz powiększony o ilość dowy jaka włynęła w danym dniu (Woda m3).

Warunek ilości wylewanej wody polega na tym, że jeśli stan zbiornika przekracza 1000000 m³ wody to trzeba wylać tą nadwyżkę (ilość która przekracza 1000000 m³), a następnego dnia rano wylać dodatkowo 2% stanu w momencie pomiaru. W przeciwnej sytuacji, czyli kiedy zbiornik nie jest przepełniony to należy wylać tylko 2% stanu zbiornika z momentu pomiaru. Wartości te mają być zaokrąglone w górę, czyli użyjemy tutaj funkcji Number.RoundUp.

Podobne obliczenia wykonamy dla Stanu_2, gdzie nie wylewamy wody jeśli przekroczymy 1000000 m³ wody w zbiorniku, ale zawsze wylewamy te 2% stanu z czasu pomiaru. Cały drugi warunek powinien wyglądać następująco:

each [

            Date=Date.AddDays ([Date], 1),

            # "Woda m3" = LWoda { [i] },

            Stan = [Stan] – [Wylać] + # "Woda m3",

            Wylać = if Stan > 1000000 then (Stan – 1000000) + Number.RoundUp (0,02* ([Stan] – [Wylać] + # "Woda m3")) else Number.RoundUp (0,02* ([Stan] – [Wylać] + # "Woda m3")),

            Stan_2 = [Stan_2] — [Wylać] + # "Woda m3",

Wylać_2 = Number.RoundUp (0,02* ([Stan_2] – [Wylać_2] + # "Woda m3")),

i = [i] +1

]

Całą formułę przedstawioną na rys. nr 14 zaznaczamy i kopiujemy za pomocą skrótu klawiszowego Ctrl+C, a następnie w Power Query dodajemy nowy krok za pomocą ikonki fx i wklejamy skopiowaną formułę do paska formuły za pomocą skrótu klawiszowego Ctrl+V. Zatwierdzamy przyciskiem Enter i otrzymamy dane przedstawione na rys. nr 16.

rys. nr 16 lista rekordów
rys. nr 16 lista rekordów

Otrzymaliśmy listę rekordów, zawierającą informacje o dacie, stanie wody danego dnia, ilości wody jaką musimy wylać itd., przedstawioną na rys. nr 17

rys. nr 17 - każdy rekord zawiera szczegółowe dane
rys. nr 17 — każdy rekord zawiera szczegółowe dane

W kolejnym kroku musimy przekształcić nasze dane z listy na tabelę, skorzystamy tutaj z polecenia Do tabeli z karty Przekształć (rys. nr 18).

rys. nr 18 - konwertowanie listy do tabeli
rys. nr 18 — konwertowanie listy do tabeli

Otworzy nam się okno Do tabeli, gdzie musimy wybrać ogranicznik, jakim mają być oddzielone dane (wybieramy Brak) oraz w polu Sposób obsługi dodatkowych kolumn wybieramy opcję Pokaż jako błędy. Tak ustawione parametry konwertowania danych do tabeli zatwierdzamy przyciskiem OK (rys. nr 19).

rys. nr 19 - okno Do tabeli - parametry konwertowania
rys. nr 19 — okno Do tabeli — parametry konwertowania

Otrzymamy listę rekordów przekonwertowaną na tabelę co widać na rys. nr 20.

rys. nr 20 - tabela z rekordami
rys. nr 20 — tabela z rekordami

Nasze rekordy dalej wyglądają po rozwinięciu tak samo jak dla listy ale tym razem zapisane są w formie tabeli. Dzięki zmianie typu danych na tabelę możemy rozwinąć te dane. Klikamy na ikonkę ze strzałkami obok nazwy kolumny Column1, zaznaczamy wszystkie kolumny (oprócz kolumny i, która była tylko kolumną pomocniczą) i odznaczamy opcję Użyj oryginalnej nazwy kolumny jako prefiksu, następnie zatwierdzamy rozwijanie danych przyciskiem OK (rys. nr 21).

rys. nr 21 - rozwijanie rekordów tabeli
rys. nr 21 — rozwijanie rekordów tabeli

Otrzymamy rozwinięte dane w postaci tabeli przedstawione na rys. nr 22.

rys. nr 22 - rozwinięte dane w tabeli
rys. nr 22 — rozwinięte dane w tabeli

Kolumny Stan i Wylać są nam potrzebne do rozwiązania podpunktu a i b z zadania a kolumny Stan_2 i Wylać_2 do rozwiązania podpunktu c. Ostatnim etapem pracy nad danymi w Power Query jest dopasowanie typu danych. Kolumna Date powinna być typu Data, a pozostałe kolumny typu Liczba całkowita (rys. nr 23).

rys. nr 23 - zmiana typu danych w poszczególnych kolumnach
rys. nr 23 — zmiana typu danych w poszczególnych kolumnach

Dla każdej części zadania zrobimy sobie osobne zapytanie, bo uda nam się wykorzystać proste polecenia ze wstążki. Tak przygotowane dane możemy załadować do Excela, korzystając z polecenia Zamknij i załaduj do z karty Narzędzia główne (rys. nr 24).

rys. nr 24 - polecenie Zamknij i załaduj do
rys. nr 24 — polecenie Zamknij i załaduj do

W Excelu otworzy nam się okno Importowania danych, gdzie wybieramy sposób wyświetlania danych jako Tabela oraz wskazujemy miejsce wstawienia danych – konkretna komórka w istniejącym arkuszu. Tak ustawione parametry wstawienia danych zatwierdzamy przyciskiem OK (rys. nr 25).

rys. nr 25 - okno Importowania danych
rys. nr 25 — okno Importowania danych

Otrzymamy dane zaczytane do Excela przedstawione na rys. nr 26.

rys. nr 26 - dane zaczytane do Excela
rys. nr 26 — dane zaczytane do Excela

Mamy do rozwiązania trzy części zadania przedstawione na rys. nr 27. Pierwszy podpunkt zadania polega na wyznaczeniu dnia, w którym pierwszy raz wypuszczono nadmiar wody po przepełnieniu.

rys. nr 27 - treść zadań do wykonania
rys. nr 27 — treść zadań do wykonania

Aby uzyskać rozwiązanie w Power Query klikamy dwukrotnie na zapytanie tWoda w zakładce Zapytania i połączenia, aby przejść do Edytora zapytań Power Query. Otworzy nam się Edytor zapytań z naszymi danymi, gdzie klikamy prawym przyciskiem myszy na nazwę zapytania tWoda i z podręcznego menu wybieramy polecenie Odwołanie (rys. nr 28).

rys. nr 28 - polecenie Odwołanie
rys. nr 28 — polecenie Odwołanie

Powstanie zapytanie tWoda (2), któremu zmieniamy nazwę na OdpA w Ustawieniach zapytania. Nasze zadanie polega na znalezieniu daty, kiedy w zbiorniku było powyżej 1000000 m3 wody, czyli wystarczy nałożyć filtr po kolumnie Stan. Rozwijamy menu klikając na ikonkę z trójkątem przy nazwie kolumny i rozwijamy polecenie Filtry liczb, następnie wybieramy polecenie Większe niż (rys. nr 29).

rys. nr 29 - ścieżka dostępu do polecenia Większe niż
rys. nr 29 — ścieżka dostępu do polecenia Większe niż

Otworzy nam się okienko Filtrowania wierszy, gdzie w polu jest większe niż wpisujemy wartość od której chcemy otrzymać większą wartość (wpisujemy 1000000). Tak ustawiony próg zatwierdzamy przyciskiem OK (rys. nr 30).

rys. nr 30 - okno Filtrowania wierszy
rys. nr 30 — okno Filtrowania wierszy

Otrzymamy przefiltrowane dane tylko z wierszami, w których stan wody przekraczał 1000000 m3 wody przedstawione na rys. nr 31 .

rys. nr 31 - przefiltrowane dane
rys. nr 31 — przefiltrowane dane

Interesuje nas pierwszy dzień, w którym ilość wody w zbiorniku przekroczyła 1000000 m3. Z naszych danych wynika, że tym dniem jest 18.04.2019 ale musimy pamiętać że pomiar danego dnia odbywa się tuż po północy, więc faktycznie jest to już 19.04.2019. Możemy to rozwiązać klikając prawym przyciskiem myszy na pierwszą komórkę z datą i z podręcznego menu wybrać polecenie Wyszczególnij (rys. nr 32).

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

Otrzymamy wyszczególnioną datę 18.04.2019. W pasku formuły mamy zapis, że został wyciągnięty wiersz o indeksie 0, ponieważ Power Query zaczyna numerację wierszy od 0, a nie jak Excel od 1 oraz informację z jakiej kolumny została wyciągnięta informacja (rys. nr 33).

rys. nr 33 - wyszczególnione dane
rys. nr 33 — wyszczególnione dane 

Problem polega na tym, że dalej wyświetla się nam 18.04.2019 a wiemy że poprawną odpowiedzią jest 19.04.2019. Aby otrzymać prawidłową odpowiedź w formule możemy dodać jeden dzień. W celu dodania jednego dnia musimy skorzystać z funkcji #duration  a następnie w nawiasie wpisać ilość dni jakie chcemy dodać oraz ilość godzin, minut i sekund (1,0,0,0). Zapis całej formuły powinien wyglądać następująco:

=#"Przefiltrowano wiersze"{0}[Date] + #duration (1,0,0,0)

Po zatwierdzeniu powyższej formuły otrzymamy prawidłową odpowiedź przedstawioną na rys. nr 34.

rys. nr 34 - działanie funkcji #duration
rys. nr 34 — działanie funkcji #duration

Uzyskaliśmy odpowiedź na pierwszą część zadania, którą teraz możemy załadować do Excela korzystając z polecenia Zamknij i załaduj do z karty Narzędzia główne (jak na rys. nr 24). Otworzy nam się okno Importowania danych, gdzie wybieramy sposób wyświetlania danych jako Tabela oraz wskazujemy gdzie chcemy wstawić dane – konkretna komórka w istniejącym arkuszu. Tak ustawione parametry importowania danych zatwierdzamy przyciskiem OK (rys. nr 35).

rys. nr 35 - okno Importowania danych do Excela
rys. nr 35 — okno Importowania danych do Excela

Otrzymamy odpowiedź na pierwszą część zadania wstawioną do Excela przedstawioną na rys. nr 36.

rys. nr 36 - rozwiązanie pierwszej części zadania
rys. nr 36 — rozwiązanie pierwszej części zadania

Druga część zadania polega na podaniu liczby dni, kiedy poziom wody w zbiorniku przekraczał 800 000 m3. Po raz kolejny klikamy dwukrotnie na zapytanie tWoda w panelu bocznym Zapytania i połączenia i przechodzimy do Edytora zapytań Power Query. Następnie robimy odwołanie do tego zapytania klikając na jego nazwę prawym przyciskiem myszy i wybierając z podręcznego menu polecenie Odwołanie (jak na rys. nr 28). W ustawieniach zapytania zmieniamy jego nazwę na OdpB. Aby uzyskać wyniki stanu wody powyżej 800 000 m3 wystarczy przefiltrować dane. Jak w rozwiązaniu pierwszej części zadania klikamy na ikonkę z trójkątem obok nazwy kolumny Stan, następnie rozwijamy polecenie Filtry liczb i wybieramy polecenie Większe niż (jak na rys. nr 29). Otworzy nam się okno Filtrowania wierszy, gdzie w polu jest większe niż wpisujemy naszą wartość – 800000. Ustawiony próg zatwierdzamy przyciskiem OK (rys. nr 37).

rys. nr 37 - okno Filtrowania wierszy - parametry filtrowania
rys. nr 37 — okno Filtrowania wierszy — parametry filtrowania

Otrzymamy wszystkie wiersze, dla których stan wody przekraczał 800000 m3 przedstawione na rys. nr 38.

rys. nr 38 - przefiltrowane dane
rys. nr 38 — przefiltrowane dane

Aby otrzymać ilość tych wierszy zaznaczamy kolumnę Data i rozwijamy polecenie Statystyka (punkt 2 na rys. nr 39) z karty Przekształć (punkt 1), a następnie wybieramy polecenie Zlicz wartości (punkt 3).

rys. nr 39 - ścieżka dostępu do polecenia Zlicz wartości
rys. nr 39 — ścieżka dostępu do polecenia Zlicz wartości

Otrzymamy liczbę wierszy, gdzie stan wody przekraczał 800 000m3 przedstawioną na rys. nr 40.

rys. nr 40 - odpowiedź do drugiej części zadania
rys. nr 40 — odpowiedź do drugiej części zadania

Możemy zauważyć że zapytania z odpowiedziami do punktu A i B różnią się ikonkami. OdpA jest datą, a OdpB jest liczbą co widać na rys. nr 41.

rys. nr 41 - typy danych w odpowiedziach do poszczególnych części zadania 5.4
rys. nr 41 — typy danych w odpowiedziach do poszczególnych części zadania 5.4

Uzyskaliśmy odpowiedź na drugą część zadania, którą teraz możemy załadować do Excela korzystając z polecenia Zamknij i załaduj do z karty Narzędzia główne (jak na rys. nr 24). Otworzy nam się okno Importowania danych, gdzie wybieramy sposób wyświetlania danych jako Tabela oraz wskazujemy gdzie chcemy wstawić dane – konkretna komórka w istniejącym arkuszu. Tak ustawione parametry importowania danych zatwierdzamy przyciskiem OK (jak na rys. nr 35).

Otrzymamy dane wstawione do Excela przedstawione na rys. nr 42.

rys. nr 42 - odpowiedź na drugą część zadania w Excelu
rys. nr 42 — odpowiedź na drugą część zadania w Excelu

Trzecia część zadania polega na podaniu największego stanu wody w zbiorniku, gdyby zrezygnować z wylewania jej nadmiaru po przekroczeniu 1000000m3. W zadaniu tym będziemy korzystać z kolumny Stan_2. Przechodzimy do Edytora zapytań Power Query klikając dwukrotnie na zapytanie tWoda w Excelu. Po raz kolejny robimy odwołanie do tego zapytania klikając na jego nazwę prawym przyciskiem myszy i wybierając z podręcznego menu polecenie Odwołanie (jak na rys. nr 28). W ustawieniach zapytania zmieniamy jego nazwę na OdpC. Aby uzyskać rozwiązanie zadania wystarczy znaleźć wartość maksymalną w kolumnie Stan_2. Zaznaczamy kolumnę Stan_2, następnie rozwijamy polecenie Statystyka (punkt 2 na rys. nr 43) z karty Przekształć (punkt 1) i wybieramy polecenie Maksimum (punkt 3).

rys. nr 43 - ścieżka dostępu do polecenia Maksimum
rys. nr 43 — ścieżka dostępu do polecenia Maksimum

Otrzymamy maksymalny stan zbiornika przedstawiony na rys. nr 44.

rys. nr 44 - odpowiedź na trzecią część zadania - maksymalny stan zbiornika
rys. nr 44 — odpowiedź na trzecią część zadania — maksymalny stan zbiornika

Uzyskaliśmy odpowiedź na trzecią część zadania, którą teraz możemy załadować do Excela korzystając z polecenia Zamknij i załaduj do z karty Narzędzia główne (jak na rys. nr 24). Otworzy nam się okno Importowania danych, gdzie wybieramy sposób wyświetlania danych jako Tabela oraz wskazujemy gdzie chcemy wstawić dane – konkretna komórka w istniejącym arkuszu. Tak ustawione parametry importowania danych zatwierdzamy przyciskiem OK (jak na rys. nr 35).

Otrzymamy dane wstawione do Excela przedstawione na rys. nr 45.

rys. nr 45 - odpowiedzi na trzy części zadania zaczytane do Excela
rys. nr 45 — odpowiedzi na trzy części zadania zaczytane do Excela

Na tym kończymy rozwiązywanie zadań z matury z informatyki z 2018 roku.


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

Excel Power Query 50 — Automatyczne wybieranie kolumn z tabeli z listy

W tym poście zajmiemy się automatycznym wybieraniem kolumn z tabeli z listy.

W Power Query odcinku 48 pokazywaliśmy jak ręcznie z dużej ilości danych wybrać konkretne kolumny ( https://www.youtube.com/watch?v=sy0ZAca-0qw ). Pod tym postem otrzymaliśmy pytanie od widza, jak to zrobić bazując na liście, czyli zakładamy że mamy listę kolumn, które chcemy wyciągnąć z większej tabeli z danymi.

Zadanie to wykonamy na przykładowych danych z rysunku nr 1.

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

Okazuje się to bardzo proste. Wystarczy że mamy listę kolumn, których potrzebujemy. Ustawiamy aktywną komórkę w obszarze tej listy i zaczytujemy dane do Power Query za pomocą polecenia Z tabeli/ zakresu z karty Dane (rys. nr 2).

rys. nr 2 - Z tabeli/zakresu
rys. nr 2 — Z tabeli/zakresu

Otworzy nam się Edytor zapytań Power Query z wczytaną tabelą tListaKolumn, która zawiera wartości null w pustych komórkach. Usunięciem tych wartości zajmiemy się w późniejszym etapie (rys. nr 3).

rys. nr 3 - Edytor zapytań Power Query z wczytaną tabelą tListaKolumn
rys. nr 3 — Edytor zapytań Power Query z wczytaną tabelą tListaKolumn

Co istotne nasze zapytanie zostało wczytane jako tabela, co widać w Liście zapytań (zaznaczone czerwoną strzałką na rys. nr 4).

rys. nr 4 - dane wczytane do Power Query jako Tabela
rys. nr 4 — dane wczytane do Power Query jako Tabela

Do dalszych działań potrzebujemy listy a nie tabeli. W tym celu wybieramy ikonkę polecenia Konwertuj na listę z karty Przekształć (rys. nr 5).

rys. nr 5 - polecenie Konwertuj na listę
rys. nr 5 — polecenie Konwertuj na listę

Otrzymamy przekonwertowane dane na listę przedstawione na rys. nr 6.

rys. nr 6 - Przekonwertowane dane na listę
rys. nr 6 — Przekonwertowane dane na listę

Na tym etapie pracy wykonaliśmy wszystko, co było potrzebne z naszymi danymi. Tak przygotowane dane musimy załadować do Excela za pomocą polecenia Zamknij i załaduj do z karty Narzędzia główne (rys. nr 7).

rys. nr 7 - polecenie Zamknij i załaduj do
rys. nr 7 — polecenie Zamknij i załaduj do

Otworzy się nam okno Importowania danych, gdzie wybieramy sposób wyświetlania danych jako Połączenie, czyli zaznaczamy checkbox przy opcji Utwórz tylko połączenie. Tak ustawione opcje importowania danych zatwierdzamy przyciskiem OK (rys. nr 8).

rys. nr 8 - okno Importowania danych
rys. nr 8 — okno Importowania danych

W kolejnym etapie pobieramy właściwe połączenie, które w naszym przykładzie jest plikiem CSV. Wybieramy polecenie Z pliku tekstowego/CSV z karty Dane (rys. nr 9).

rys. nr 9 - polecenie Z pliku tekstowego /CSV
rys. nr 9 — polecenie Z pliku tekstowego /CSV

Otworzy się nam okno Importowania danych, gdzie musimy znaleźć interesujący nas plik, zaznaczyć go i zatwierdzić nasz wybór przyciskiem OK (rys. nr 10).

rys. nr 10 - Okno Importowania danych
rys. nr 10 — Okno Importowania danych

W pliku CSV mamy dużą ilość danych, z których chcemy wyciągnąć tylko kolumny z naszej listy. Otworzy nam się okno z tymi danymi, gdzie klikamy przycisk Edytuj, aby przejść do edycji tego zapytania (rys. nr 11).

rys. nr 11 - polecenie Edytuj zapytanie
rys. nr 11 — polecenie Edytuj zapytanie

Otworzy nam się edytor zapytań Power Query z wczytanymi wszystkimi danymi przedstawiony na rys. nr 12.

rys. nr 12 - Edytor zapytań z wczytanymi danymi z pliku CSV
rys. nr 12 — Edytor zapytań z wczytanymi danymi z pliku CSV

Przykładowo możemy usunąć niepotrzebne kolumny, czyli zaznaczyć interesujące nas kolumny, następnie kliknąć prawym przyciskiem myszy na dowolną z nich i z podręcznego menu wybrać polecenie Usuń inne kolumny (rys. nr 13).

rys. nr 13 -  polecenie Usuń inne kolumny
rys. nr 13 — polecenie Usuń inne kolumny

Nie ma znaczenia, które kolumny usuniemy, o ile Power Query użyje funkcji Table.SelectColumns, która ma w zapisie formuły listę kolumn, które chcemy zachować (rys. nr 14). 

rys. nr 14 - argumenty funkcji Table.SelectColumns
rys. nr 14 — argumenty funkcji Table.SelectColumns

W Power Query możemy się odwołać do innego zapytania, czyli w zapisie funkcji zastąpić listę kolumn, które zostały wpisane automatycznie, zapytaniem z listą, które przygotowaliśmy sobie na początku pracy (zapytanie tListaKolumn). Zapis funkcji powinien wyglądać następująco: (rys. nr 15)

=Table.SelectColumns(#"Zmieniono typ", tListaKolumn) 

rys. nr 15 - Zapis funkcji Table.SelectColumns z odwołaniem do zapytania z listą
rys. nr 15 — Zapis funkcji Table.SelectColumns z odwołaniem do zapytania z listą

Po zatwierdzeniu formuły otrzymamy błąd, wynikający z wartości null na liście (rys. nr 16). Power Query nie może przekonwertować wartości null.

rys. nr 16 - Błąd funkcji wynikający z wartości null na liście
rys. nr 16 — Błąd funkcji wynikający z wartości null na liście

Aby usunąć błąd przechodzimy do zapytania tListaKolumn, następnie co istotne w kroku poprzedzającym krok Lista wybór (krok Zmieniono typ), nakładamy na dane filtr. Rozwijamy ikonkę trójkąta w nagłówku kolumny z następnie wybieramy polecenie Usuń puste (rys. nr 17).

rys. nr 17 - Filtrowanie listy za pomocą polecenia Usuń puste
rys. nr 17 — Filtrowanie listy za pomocą polecenia Usuń puste

Pojawi nam się komunikat Wstawianie kroku, w którym musimy zatwierdzić nasze działanie przyciskiem Wstaw (rys. nr 18).

rys. nr 18 - Komunikat o wstawieniu nowego kroku
rys. nr 18 — Komunikat o wstawieniu nowego kroku

Dzięki temu krokowi wartości null zostały usunięte z listy. Otrzymamy listę przedstawioną na rys. nr 19.

rys. nr 19 - Odfiltrowana lista kolumn
rys. nr 19 — Odfiltrowana lista kolumn

Nasza lista potrzebnych kolumn nie zawiera już wartości null i dzięki temu jak przejdziemy do naszego zapytania FoodMart Klienci, błędu nie będzie. Wpisana wcześniej formuła z odwołaniem do zapytania tListaKolumn zadziała prawidłowo i otrzymamy dane zawierające kolumny z listy (rys. nr 20).

rys. nr 20 - prawidłowe działanie funkcji Table.SelectColumns
rys. nr 20 — prawidłowe działanie funkcji Table.SelectColumns

Tak przygotowane dane możemy załadować do Excela za pomocą polecenie Zamknij i załaduj do z karty Narzędzia główne (analogicznie jak na rys. nr 7).

Otworzy nam się okno Importowania danych, gdzie wybieramy sposób wyświetlania danych jako Tabela, następnie wskazujemy miejsce wstawienia danych – Istniejący arkusz oraz wskazujemy konkretną komórkę. Tak ustawione parametry wstawienia danych do Excela zatwierdzamy przyciskiem OK (rys. nr 21).

rys. nr 21 - Okno importowania danych
rys. nr 21 — Okno importowania danych

Otrzymamy dane wczytane do Excela zawierające tylko kolumny z listy, przedstawione na rys. nr 22.

rys. nr 22 - Dane zaimportowane do Excela
rys. nr 22 — Dane zaimportowane do Excela

Tabela wczytana z Power Query działa dynamicznie. Przykładowo możemy zmienić nasze dane w liście kolumn (zmieniamy kolumnę Nazwisko na Adres i dokładamy nową kolumnę Liczba dzieci), następnie odświeżyć dane z Power Query klikając prawym przyciskiem myszy na dowolną komórkę z obszaru tabeli i wybierając polecenie Odśwież (rys. nr 23).

rys. nr 23 - polecenie Odśwież
rys. nr 23 — polecenie Odśwież

Po odświeżeniu danych otrzymamy zmienione dane, w których kolumna Nazwisko została zastąpiona kolumną Adres i została dołożona nowa kolumna Liczba dzieci (rys. nr 24).

rys. nr 24 - automatycznie zaktualizowane dane
rys. nr 24 — automatycznie zaktualizowane dane

Podsumowując stworzyliśmy tabelę z kolumnami z listy, która działa dynamicznie i zawiera kolumny, które aktualnie są na liście.


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

Power Query #27 — Usuń wybrane kolumny VS usuń inne kolumny

W dzisiejszym poście omówimy różnice pomiędzy poleceniami Usuń inne kolumny a Usuń wybrane kolumny w Power Query. Tak naprawdę będą to różnice pomiędzy funkcjami, które kryją się pod tymi poleceniami, czyli odpowiednio Table.RemoveColumns oraz Table.SelectColumns. Zagadnienie to omówimy na podstawie przykładowych danych z rysunku nr 1.

rys. nr 1 — Przykładowe dane

Aby obrazowo wyjaśnić temat – chodzi o to, że mamy za dużo kolumn z danymi i po prostu część z nich chcemy usunąć lub chcemy usunąć wszystkie oprócz zaznaczonych. Mamy tabelę danych w Excelu, zaznaczamy w jej obszarze dowolną komórkę, a następnie wybieramy polecenie Z tabeli (punkt nr 2 na rysunku nr 2) z karty Dane.

rys. nr 2 — Z tabeli

Otworzy nam się edytor zapytań w Power Query z wczytaną tabelą tSprzedaż (rys. nr 3).

rys. nr 3 — Edytor zapytań

Przede wszystkim, aby dane dobrze się prezentowały musimy zmienić format danych z kolumny Data. Klikamy na ikonkę po lewej stronie nazwy kolumny Data a następnie z podręcznego menu wybieramy polecenie Data (rys. nr 4).

rys. nr 4 — Zmiana typu wyświetlania danych

Wyświetli się nam komunikat dotyczący zmiany typu kolumny, w którym musimy zatwierdzić zmianę klikając przycisk Zamień bieżącą (rys. nr 5).

rys. nr 5 — Komunikat o zmianie typu kolumny

Zakładamy, że w naszym przypadku interesują nas trzy kolumny: Data, Sprzedawca i Zysk. Zaznaczamy pozostałe kolumny (od kolumny Region do kolumny KWS) i klikamy prawym przyciskiem myszy na nagłówek dowolnej kolumny z tych zaznaczonych i z podręcznego menu wybieramy polecenie Usuń kolumny (rys. nr 6)

rys. nr 6 — Usuń kolumny

Otrzymamy interesujące nas kolumny (rys. nr 7). W pasku formuły pokaże się nam funkcja Table.RemoveColumns odpowiadająca poleceniu Usuń kolumny.

rys. nr 7 funkcja Table.RemoveColumns

Jeśli nie mamy widocznego paska formuły możemy to łatwo zmienić, klikając checkbox przy poleceniu Pasek formuły na karcie Widok (zaznaczone na rysunku nr 8).

rys. nr 8 — Pasek formuły

Na pasku formuły dla funkcji Table.RemoveColumns w formule mamy wypisane nazwy kolumn, które usunęliśmy (rys. nr 9).

rys. nr 9 — Argumenty funkcji Table.RemoveColumns

W Power Query w formułach funkcji są podawane nazwy kolumn. Wystarczy, że nazwa kolumny ulegnie zmianie i pojawiają się błędy. 

Możemy usunąć ostatni krok z Zastosowanych kroków, aby wrócić do danych wejściowych. Na danych wejściowych pokażemy bowiem drugie polecenie, które moim zdaniem lepiej się sprawdza, czyli polecenie Usuń inne kolumny. Zaznaczamy kolumny, które nas interesują (które chcemy zostawić). Zaznaczamy w pierwszej kolejności kolumnę Sprzedawca, następnie przytrzymując klawisz Ctrl Kolumnę Data i Zysk. Klikamy na tytuł którejś z tych zaznaczonych kolumn i z podręcznego menu wybieramy polecenie Usuń inne kolumny (rys. nr 10). 

rys. nr 10 — Usuń inne kolumny

Po użyciu tego polecenia zostały usunięte kolumny, które nie były zaznaczone (rys. nr 11).

rys. nr 11 — Dane po usunięciu kolumn

W pasku formuły pojawi się zapis funkcji Table.SelectColumns, w której mamy wypisane nazwy kolumn, które nas interesują (rys. nr 12). Przy tej funkcji nie interesuje nas, że ktoś dołoży kolejną kolumnę do danych wejściowych. Nowa kolumna nie zostanie tutaj uwzględniona i nasze końcowe dane się nie zmienią.

rys. nr 12 — Zapis funkcji Table.SelectColumns

Bez względu na zmianę w danych wejściowych ilość wyświetlanych kolumn się nie zmieni. Kolejnym plusem jest to, że kolumny są wyświetlane w takiej kolejności w jakiej je zaznaczyliśmy przed użyciem polecenia Usuń inne kolumny. Możemy również ręcznie zmienić kolejność wyświetlania kolumn w kodzie w pasku formuły.

W Power Query, jeśli znamy nazwę interesującej nas funkcji i wpiszemy ją w pasku formuły a następnie zatwierdzimy przyciskiem Enter, to wyświetlą nam się informacje o tej funkcji z oficjalnej strony Microsoftu (rys. nr 13).

Możemy się tutaj dowiedzieć, że funkcja ta posiada dodatkowy parametr missingField, który może przyjąć jedną z trzech wartości. Będzie się wyświetlał błąd jeśli podaliśmy złą nazwę kolumny lub zignoruje ten brak albo wypełni je wartościami null. Poniżej mamy także podane przykłady działania tej funkcji.

Zrobimy przykład, w którym dopiszemy do formuły MissingField.UseNull i zmienimy nazwy kolumn Data i Zysk na Data2 i Zysk2, czyli na takie które nie występują w danych. Power Query wypełni je wartościami null (rys. nr 14).

rys. nr 14 — Dane wypełnione wartościami null

Jeśli do zapisu formuły użyjemy MissingField.Ignore to zostanie nam tylko kolumna ze Sprzedawcami. Jeśli nie podamy tego parametru, to Power Query domyślnie wybierze wyświetlenie błędu (rys. nr 15).

rys. nr 15 — Domyślny komunikat jeśli nie podamy parametru MissingField

Ja wole funkcje Table.SelectColumns czyli usunięcie innych kolumn a pozostawienie tych, które są mi potrzebne. Przede wszystkim dlatego, że dodawanie innych kolumn nie wpłynie na wynik tej funkcji. Łatwiej jest korzystać z tych domyślnych opcji na pasku narzędzi niż z kodu w pasku formuły, ponieważ przy słabej znajomości języka M w Power Query możemy nie wiedzieć jak wpisać poszczególne parametry danej funkcji.

Wynik tej funkcji z rysunku nr 11 możemy sobie załadować do Excela za pomocą polecenia Zamknij i załaduj z karty Narzędzia główne (rys. nr 16).

rys. nr 16 — Zamknij i załaduj

Otrzymamy dane wczytane do Excela przedstawione na rysunku nr 17.

rys. nr 17 — Dane wczytane do Excela

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