Jak radzić sobie z błędami w Power Query?

Dodatki do Excela
Średniozaawansowany
Porządkowanie danych
0:00czas trwania

Pracując w Power Query mogą pojawić się różne nieprawidłowości, błędy. Prezentujemy możliwe pomyłki aplikacji oraz sposoby w jaki można je szybko usunąć. Wskazujemy, w jaki sposób Power Query informuje nas o tych błędach i co można z nimi zrobić. Sprawdź potencjalne błędy i je napraw!

Opublikowane: 28 października 2020
Wykonaj zadanie samodzielnie
Dostępne po opłaceniu
Pobierz szablon do dalszej pracy
Dostępne po opłaceniu

Zobacz krok po kroku jak wykonać lekcję

Z lekcji dowiesz się:

  • W jaki sposób Power Query informuje o błędach?

  • O najnowszych funkcjonalnościach Power Query!

  • Jakie działania naprawcze Power Query wykona automatycznie?

Wykonaj zadanie samodzielnie
Dostępne po opłaceniu
Pobierz szablon do dalszej pracy
Dostępne po opłaceniu

Z lekcji dowiesz się:

  • W jaki sposób Power Query informuje o błędach?

  • O najnowszych funkcjonalnościach Power Query!

  • Jakie działania naprawcze Power Query wykona automatycznie?

Zagadnienie naprawy błędów omówimy na podstawie przykładowych danych z rys. 1. Są tam zawarte oczywiste błędy związane z datami.

Rys. 1. Przykładowe dane z błędami

Zaczynamy od zaczytania danych do Power Query. W tym celu ustawiamy aktywną komórkę na obszarze tabeli z rys. 1 i wybieramy polecenie Z tabeli/ zakresu z karty Dane (rys. 2).

Rys. 2. Polecenie Z tabeli/ zakresu

Otworzy się Edytor zapytań Power Query z wczytaną tabelą tShort. Na rys. 3 widać, że Power Query nie zmienił typu danych na Data, ale zostawił typ ogólny. Wynika to z błędnego zapisu dat, których Power Query nie rozpoznał (rys. 3) i potraktował je jako tekst.

Rys. 3 Ogólny typ danych w kolumnie z datami

Nam zależy, aby te wszystkie wartości zostały potraktowane jako data. W tym celu klikamy na ikonkę ABC123 przy nazwie kolumny Data i z podręcznego menu wybieramy typ danych Data (rys. 4).

Rys. 4 Zmiana typu danych na Data

Otrzymamy dane przedstawione na rys. 5, gdzie w miejscu błędnie zapisanej daty pojawił się błąd (Error).

Rys. 5 Błędy (Error) w danych

Kiedy klikniemy na jeden z tych błędów, pod tabelą wyświetli się komunikat informujący o błędzie (rys. 6).

Rys. 6 Informacje o błędach

Power Query połączony z nowych Excelem ma funkcjonalność, która pokazuje stan danej kolumny (zaznaczone strzałką na rys. 7).

Rys. 7. Pasek z informacją o stanie kolumny

Widnieje tutaj także informacja, ile dana kolumna zawiera błędów. Ponadto mamy możliwość ich usunięcia lub kilka innych opcji do wyboru. Dostępne opcje są możliwe do wybrania po kliknięciu na ikonkę wielokropku (rys. 8).

Rys. 8. Opcje dostępne w odniesieniu do danej kolumny

Jeśli nie dysponujemy nową wersją Excela, to możemy skorzystać z grupy poleceń Zachowywania wierszy (np. polecenie Zachowaj błędy) z karty Narzędzia główne (rys. 9) lub Usuwania wierszy (np. polecenie Usuń błędy) – rys. 10.

Rys. 9 Grupa poleceń Zachowywania wierszy

Rys. 10 Grupa poleceń Usuwania wierszy

Dodatkowo na karcie Przekształć możemy rozwinąć polecenie Zamienianie wartości i wybrać polecenie np. Zamienianie błędów (rys. 11).

Rys. 11 Polecenie Zamienianie błędów

Podsumowując wszystkie te możliwości (z rys. 9, 10 i 11) zawarte w jednym miejscu – oferuje nowa wersja oprogramowania Excela. Musimy obsłużyć te błędy i sprawdzić, jakie zawierają informacje. W tym celu wybieramy polecenie Kolumna niestandardowa z karty Dodaj kolumnę (rys. 12).

Rys. 12 Polecenie Kolumna niestandardowa

Otworzy się okno Kolumny niestandardowej, gdzie w polu Nazwa nowej kolumny wpisujemy "Errors". Następnie w polu Formuła kolumny niestandardowej użyjemy słowa kluczowego "try", czym będziemy chcieli sprawdzić wartości w kolumnie Data. Zapis formuły kolumny niestandardowej powinien wyglądać następująco: = try [Data].

Tak ustawione parametry kolumny niestandardowej zatwierdzamy przyciskiem OK (rys. 13).

Rys. 13 Okno kolumny niestandardowej

Otrzymamy nową kolumnę z rekordami przedstawioną na rys. 14. Funkcja TRY tworzy record, wyciąga informacje z kolumny Data, czy był błąd czy nie. W zależności od tego, czy komórka zawierała błąd czy nie otrzymamy wyniki True lub False.

Rys. 14 Nowa kolumna niestandardowa

Teraz możemy rozwinąć informacje z kolumny Errors na poszczególne kolumny. W tym celu klikamy na ikonkę ze strzałkami, następnie odznaczamy checkbox przy poleceniu Użyj oryginalnej nazwy kolumny jako prefiksu. W okienku znajdują się informacje, jakie kolumny powstaną po rozwinięciu (HasError, Value i Error). Rozwinięcie danych zatwierdzamy przyciskiem OK (rys. 15).

Rys. 15 Rozwijanie danych

Otrzymamy rozwinięte dane przedstawione na rys. 16.

Rys. 16 Rozwinięte dane

W pierwszym wierszu kolumny HasError mamy informację logiczną FALSE, wynika to z tego, że ten wiersz nie zawierał błędu. W efekcie w kolumnie Value występuje powtórzona wartość z kolumny Data. W drugim wierszu (gdzie jest Error) otrzymaliśmy w kolumnie HasError wartość logiczną TRUE, natomiast w kolumnie Value nie mamy podanej tej błędnej wartości tylko wartość null. W tym przypadku w kolumnie Error mamy więcej szczegółów (Record), a mianowicie informację o tym błędzie.

Teraz będziemy chcieli skupić się na analizie błędów. W tym celu zaznaczamy kolumnę Data i rozwijamy polecenie Zachowaj wiersze (punkt 2 na rys. 17) z karty Narzędzia główne (punkt 1), następnie wybieramy polecenie Zachowaj błędy (punkt 3).

Rys. nr 17 – polecenie Zachowaj błędy

Otrzymamy dane zawierające tylko 2 wiersze z błędami przedstawione na rys. nr 18.

Rys. 18 Dane z błędami

Kolumna Value przy analizie błędów nic nie wnosi, więc możemy ją zaznaczyć i skasować za pomocą klawisza Delete. Kolumna Error zawiera informacje o błędzie (Record), tą samą, która pojawiała się na żółtym tle po kliknięciu na słowo Error w danych. Informacje te możemy sobie odpowiednio rozwinąć klikając na ikonkę ze strzałkami obok nazwy kolumny Error. Pojawi się okienko, w którym możemy wybrać jakie kolumny nas interesują. Zaznaczamy wszystkie dane i zatwierdzamy przyciskiem OK (rys. 19).

Rys. 19 Rozwijanie danych w kolumnie Error

Otrzymamy szczegółowe informacje o błędzie, w kolumnie Reason mamy informację, jaki to typ błędu. W kolumnie Message mamy wiadomość, a w kolumnie Detail wartość z komórki z błędem (rys. 20).

Rys. 20 Rozwinięte informacje o błędzie

Na początku danych mamy kolumnę ID sprzedaży, która pozwoli zlokalizować te błędy. Gdybyśmy jednak takiej kolumny nie mieli, to musielibyśmy dodać kolumnę z indeksem, żeby łatwo zlokalizować, gdzie błąd wystąpił. Taką tabelę z analizą błędów możemy zaczytać do Excela. W tym celu wybieramy polecenie Zamknij i załaduj do z karty Narzędzia główne (rys. 21).

Rys. 21 Polecenie Zamknij i załaduj do

W Excelu otworzy się okno Importowania danych, gdzie wybieramy sposób wyświetlania danych jako Tabela i miejsce wstawienia danych – Nowy arkusz. Tak ustawione parametry importowania danych zatwierdzamy przyciskiem OK (rys. 22).

Rys. 22 Okno Importowania danych

Otrzymamy dane wstawione do Excela do nowego arkusza, przedstawione na rys. 23.

Rys. 23 Dane zaimportowane do Excela

Jak widać powyżej kolumna Data jest pusta, wynika to z tego, że jeśli w Power Query w komórce jest błąd (Error) to do Excela zostaje zaimportowana pusta komórka.

Powyżej została przedstawiona sytuacja, kiedy Power Query znajdzie błędy w pierwszym tysiącu wierszy. Teraz zajmiemy się sytuacją, kiedy błędy będą występować dopiero po przekroczeniu pierwszego tysiąca wierszy.

Teraz zaczytamy dane do Power Query z dłuższej tabeli, która ma ponad 19 tysięcy wierszy. Ustawiamy aktywną komórkę w obrębie tabeli, następnie wybieramy polecenie Z tabeli/ zakresu z karty Dane (jak na rys. 2).

Otworzy się edytor zapytań Power Query z wczytaną tabelą tSprzedaż przedstawioną na rys. 24.

Rys. 24 Wczytane dane

Możemy zauważyć, że w kolumnie Data Power Query nie wykrywa błędów, które celowo umieściliśmy dopiero po 1000 danych. Wynika to z faktu, że Power Query w swoich statystykach (określaniu typów danych) bierze pod uwagę tylko 1000 pierwszych wierszy (rys. 25).

Rys. 25 Ilość wierszy uwzględniana przy profilowaniu danych

Power Query określił typ danych dla kolumny Data jako Data i godzina, więc teraz zmienimy typ danych na Datę. Klikamy na ikonkę z kalendarzem i z podręcznego menu wybieramy typ Data (rys. 26).

Rys. 26 Zmiana typu danych w kolumnie Data

Wyświetli nam się komunikat, w którym musimy potwierdzić zmianę typu danych za pomocą przycisku Zamień bieżącą (rys. 27).

Rys. 27 Komunikat o zmianie typu danych

Nawet po zmianie typu danych na Data, Power Query nie wykrywa błędów w danych (rys. 28).

Rys. 28 Dane po zmianie typu w kolumnie Data

Kolumna Data nadal wyświetla się na zielono i mamy w niej informację, że wszystkie wiersze są prawidłowe (rys. 29).

Rys. 29 Informacja o kolumnie

Wiemy, że nasze dane zawierają błędy. Teraz zaczytamy dane do Excela za pomocą polecenia Zamknij i załaduj do z karty Narzędzia główne (jak na rys. 21). W Excelu otworzy się okno Importowania danych, gdzie wybieramy sposób wyświetlania danych jako Tabela oraz wskazujemy miejsce wstawienia danych – Nowy arkusz. Tak ustawione parametry importowania danych zatwierdzamy przyciskiem OK (jak na rys. 22).

Otrzymamy dane zaimportowane do Excela. Co istotne przy importowaniu danych do Excela, Power Query przeanalizuje wszystkie wiersze i znajdzie błędy. Informacje o błędach będziemy mieć zawartą w panelu bocznym Zapytań i połączeń (zaznaczone strzałką na rys. 30).

Rys. 30 Dane zaimportowane do Excela z pokazaną ilością błędów

Gdyby panel (okno) Zapytań i połączeń nie był widoczny, możemy go uruchomić za pomocą polecenia Zapytania i połączenia z karty Dane (rys. 31).

Rys. 31 Uruchamianie okna Zapytań i połączeń

Możemy kliknąć na link z błędami (zaznaczony strzałką na rys. 30), żeby Power Query z tej dużej głównej tabeli wyciągnął informacje o błędach. Otworzy się Power Query z tabelą zawierającą tylko wiersze z błędami (rys. 32).

Rys. 32 Wyciągnięte wiersze z błędami

Power Query sam automatycznie wykonał kilka czynności, mianowicie wykrył niezgodności typów, dodał kolumnę z indeksem, użył polecenia Zachowaj błędy i zmienił kolejność kolumn, aby mieć nr indeksu na początku danych. Te czynności widać w Ustawieniach zapytania, w Zastosowanych krokach (rys. 33).

Rys. 33 Zastosowane kroki

Tego zapytania nie będziemy już zaczytywać do Excela. Ważne jest, aby pamiętać, że Power Query wykrywa błędy tylko w pierwszym tysiącu wierszy i warto sprawdzić, czy dalej nie ukrył się jakiś błąd. Power Query sprawdza całość danych dopiero przy ładowaniu ich do Excela.

Przejdziemy teraz na arkusz Porównanie w naszym pliku do tego zadania, gdzie będziemy chcieli zrobić proste porównanie sprzedaży z roku 2019 i 2020. Przykładowe dane do tego zadania przedstawione zostały na rys. 34.

Rys. 34 Przykładowe dane do zadania

Takie porównanie w Excelu zrobilibyśmy za pomocą funkcji JEŻELI.BŁĄD Zapis funkcji wyglądał by następująco:

=JEŻELI.BŁAD([@2020]/[@2019]-1;"")

Funkcja ta sprawdzałaby obliczenia. Dla pierwszego wiersza obliczenia zwróciłyby błąd, wtedy otrzymalibyśmy pusty ciąg tekstowy. Podobna sytuacja wydarzy się w ostatnim wierszu, ponieważ nie ma jeszcze danych za grudzień 2020 i wtedy funkcja zwróci pusty ciąg tekstowy (dzielenie tekstu przez liczbę).

Podsumowując w dwóch przypadkach otrzymaliśmy pustą komórkę, więc teraz sprawdzimy jak w tej sytuacji zadziała Power Query. Zaczytujemy dane do Power Query za pomocą polecenia Z tabeli/ zakresu z karty Dane (jak na rys. 2).

Otworzy nam się edytor zapytań Power Query z wczytaną tabelą tPorównanie (rys. 35).

Rys. 35 Dane zaczytane z Excela

Powinniśmy dodatkowo zmienić typ danych w kolumnie Porównaj, aby dane były w postaci procentowej. W tym celu klikamy na ikonkę 1.2 przy nazwie kolumny i z podręcznego menu wybieramy typ Wartość procentowa (rys. 36).

Rys. 36 Zmiana typu danych

Pojawi się okienko Zmiany typu kolumny, którą musimy zatwierdzić przyciskiem Zamień bieżącą.

Otrzymamy dane po zmianie typu przedstawione na rys. 37.

Rys. 37 Dane po zmianie typu na wartość procentową

Kiedy zaczytaliśmy dane z formułą stworzoną w Excelu puste komórki zostały zastąpione wartościami null. Sprawdzimy co się stanie, kiedy takie obliczenie wykonamy w Power Query. W tym celu dodamy nową kolumnę, czyli wybieramy polecenie Kolumna niestandardowa z karty Dodaj kolumnę (rys. 38).

Rys. 38 Polecenie Kolumna niestandardowa

Otworzy się okno Kolumny niestandardowej, gdzie w polu Nazwa nowej kolumny wpisujemy 2020/2019, następnie wpisujemy formułę kolumny niestandardowej. W formule tej będziemy chcieli podzielić dane z roku 2020 przez dane z 2019 i odjąć wartość 1. Zapis powinien wyglądać następująco:

=[2020]/[2019]-1

Tak przygotowane parametry kolumny niestandardowej zatwierdzamy przyciskiem OK (rys. 39).

Rys. 39 Okno kolumny niestandardowej

Otrzymamy dane z nową kolumną niestandardową przedstawione na rys. 40.

Rys. 40 Dane z nową kolumną niestandardową

Jak widać na rysunku powyżej obliczenia w Power Query wyszły takie same jak w tych z Excela, ale mamy w danych dwa inne wyniki – Infinity, (nieskończoność) i Error (błąd). Obliczenie z pierwszego wiersza zwróciło wynik Infinity, ponieważ Power Query rozumie takie pojęcie jak nieskończoność (Excel nie). W ostatnim wierszu otrzymaliśmy błąd, ponieważ w Power Query również nie możemy dzielić wartości tekstowej przez liczbę.

Po kliknięciu na Error otrzymamy dokładną informację o błędzie przedstawioną na rys. 41.

Rys. 41 Informacja o błędzie

Nasze zadanie polega na tym, aby Power Query obsłużył te wyniki. W tym celu zmodyfikujemy zapis formuły kolumny niestandardowej. Klikamy na koło zębate obok nazwy kroku Dodano kolumnę niestandardową w Zastosowanych krokach. Otworzy się ponownie okno kolumny niestandardowej, gdzie przed poprzednią formułę dołożymy słowo kluczowe try. Tak zmienioną formułę zatwierdzamy przyciskiem OK (rys. 42).

Rys. 42 Okno kolumny niestandardowej (zmiana w formule)

Otrzymamy kolumnę z rekordami przedstawioną na rys. 43, z informacją czy wystąpił błąd czy też nie (true lub false).

Rys. 43 Kolumna z rekordami

Powyższe rekordy możemy sobie rozwinąć klikając na ikonkę ze strzałkami obok nazwy kolumny. Pojawi się okienko, w którym zaznaczamy wszystkie kolumny i odznaczamy checkbox przy poleceniu Użyj oryginalnej nazwy kolumny jako prefiksu. Rozwinięcie to zatwierdzamy przyciskiem OK (rys. 44).

Rys. 44 Rozwijanie danych (rekordów)

Otrzymamy rozwinięte dane przedstawione na rys. 45.

Rys. 45 Rozwinięte dane

Nie chcemy jednak wykorzystać takiego sposobu, dlatego usuwamy ostatni krok z Zastosowanych kroków (Rozwinięty element 2020/2019) za pomocą klawisza Delete.

Chcemy, aby Power Query za każdym razem, kiedy napotka błąd, wykonywał określoną czynność. Dlatego po raz kolejny przechodzimy do edycji kroku Dodano kolumnę niestandardową za pomocą koła zębatego. Otworzy się okno Kolumny niestandardowej, gdzie w formule musimy użyć innego słowa kluczowego otherwise. Zapis formuły powinien wyglądać następująco:

= try [2020]/[2019]-1

Otherwise "brak danych"

Tak zmienioną formułę kolumny niestandardowej zatwierdzamy przyciskiem OK (rys. 46).

Rys. 46 Zmiany w formule kolumny niestandardowej

Otrzymamy kolumnę niestandardową przedstawioną na rys. 47, gdzie zamiast błędu otrzymujemy zapis "brak danych".

Rys. 47 Kolumna niestandardowa po zmianach w formule

Użyte słowo kluczowe "try" działa na zasadzie funkcji JEŻELI.BŁĄD w Excelu, natomiast słowo "otherwise" pełni rolę drugiego argumentu powyższej funkcji. Załadujemy teraz powyższe dane do Excela za pomocą polecenia Zamknij i załaduj do z karty Narzędzia główne. W Excelu otworzy się okno Importowania danych, gdzie wybieramy sposób wyświetlania danych jako tabela, a następnie wybieramy miejsce wstawienia danych – Istniejący arkusz oraz wskazujemy konkretną komórkę. Tak ustawione parametry importowania danych zatwierdzamy przyciskiem OK (rys. 48).

Rys. 48 Okno importowania danych

Otrzymamy dane przedstawione na rys. 49. Załadowaliśmy dane głównie po to, aby sprawdzić, jak Excel poradzi sobie z "Infinity" z Power Query.

Rys. 49 Dane zaimportowane do Excela

Jak łatwo zauważyć w Excelu otrzymaliśmy błąd liczby (#LICZBA!). Wynika to z tego, że Excel nie zna pojęcia nieskończoność. Możemy również zauważyć, że zniknęło formatowanie kolumny Porównaj, które nałożyliśmy w Power Query. Należy zapamiętać, że formatowanie z Power Query nie przenosi się do Excela, więc musimy bezpośrednio w Excelu samodzielnie nałożyć odpowiednie formatowanie. Zaznaczamy kolumny Porównaj i 2020/2019, następnie wybieramy formatowanie Procentowe w grupie poleceń Liczba na karcie Narzędzia główne (rys. 50).

Rys. 50 Zmiana formatowania liczbowego

Otrzymamy sformatowane dane przedstawione na rys. 51.

Rys. 51 Sformatowane dane

Podsumowując, nie chcemy otrzymać błędu liczby w Excelu po zaimportowaniu danych. Zależy nam na poradzeniu sobie z nieskończonością w Power Query, więc wracamy do naszego zapytania tPorównanie klikając dwukrotnie na jego nazwę w oknie Zapytań i połączeń (rys. 52).

Rys. 52 Okno Zapytań i połączeń

Otworzy się edytor zapytań z danymi, które importowaliśmy do Excela (jak na rys. 47). Zajmiemy się teraz przekształceniem zapisu Infinity na zapis, który Excel będzie w stanie zrozumieć.

Po kliknięciu na komórkę z Infinity, pod tabelą pojawi się znak nieskończoności, który zaznaczamy i kopiujemy za pomocą skrótu klawiszowego Ctrl+C (będzie potrzebny później). W pierwszym kroku wybieramy polecenie Kolumna warunkowa z karty Dodaj kolumnę (rys. 53).

Rys. 53 Polecenie Kolumna warunkowa

Otworzy się okno Dodawania kolumny warunkowej, gdzie w polu Nazwa nowej kolumny wpisujemy Prawidłowe (punkt 1 na rys. 54). Następnie w polu Nazwa kolumny wybieramy wartości z kolumny 2020/2019 (punkt 2), w polu Operator zostawiamy domyślne działanie równa się (punkt 3), w polu Wartość wklejamy skopiowany wcześniej znak nieskończoności za pomocą skrótu klawiszowego Ctrl+V (punkt 4).

Jeśli wartość z kolumny 2020/2019 równa się nieskończoność to wtedy chcemy otrzymać zapis "brak" – wpisany w polu Wartość wyjściowa (punkt 5). Jeśli otrzymujemy wartość inną niż nieskończoność, to chcemy otrzymać wartości z kolumny 2020/2019, czyli w polu W przeciwnym razie wybieramy kolumnę 2020/2019 (punkt 6).

Tak ustawione parametry kolumny warunkowej zatwierdzamy przyciskiem OK. Analogicznie możemy wykonać zapis dla ujemnej nieskończoności, wystarczy dodać nową klauzulę.

Rys. 54 Kroki dodawania kolumny warunkowej

Otrzymamy dane z nową kolumną warunkową przedstawione na rys. 55.

Rys. 55 Dane z kolumną warunkową

Zapisowi testów logicznych możemy się przyjrzeć w pasku formuły, gdzie zamiast znaku nieskończoności mamy zapis #infinity. Podsumowując, to co zapisaliśmy w interfejsie użytkownika, Power Query przełożył na kod języka M. Ważne jest, że dzięki użyciu kolumny warunkowej, otrzymaliśmy zapis brak zamiast Infinity (rys. 56).

Rys. 56 Zapis formuły dla kolumny warunkowej

Możemy teraz usunąć kolumnę 2020/2019, aby po zaimportowaniu danych do Excela nie pokazywał nam się błąd liczby. Zaznaczamy kolumnę i usuwamy ją za pomocą klawisza Delete. Po raz kolejny importujemy powyższe dane do Excela za pomocą polecenia Zamknij i załaduj z karty Narzędzia główne (rys. 57).

Rys. 57 Polecenie Zamknij i załaduj

W Excelu nie otworzy się okno Importowania danych, bo już ustawione zostało miejsce docelowe. Dane odświeżą się automatycznie. Musimy teraz sformatować kolumnę Prawidłowe na procenty (jak na rys. 50). Otrzymamy dane przedstawione na rys. 58.

Rys. 58 Sformatowane dane

Pokazaliśmy, jak radzić sobie z obsługą błędów w Power Query oraz jak poradzić sobie z występującymi w Power Query pojęciami, które nie są zrozumiałe dla Excela (Infinity).

Adam Kopeć

Wykonaj zadanie samodzielnie
Dostępne po opłaceniu
Pobierz gotowy arkusz z lekcji
Dostępne po opłaceniu
Kolejne kroki dostępne dla użytkowników którzy wykupili pełny dostęp

Jeszcze się wahasz?

Zobacz, co zyskasz, mając pełny dostęp:

  • Dostęp do wszystkich lekcji video
  • Materiały do ćwiczeń
  • Dodatkowe artykuły z trikami
  • Formularze gotowe od razu do użycia
  • E-booki pogłębiające Twoją wiedzę
  • Certyfikat potwierdzający Twoje umiejętności
Sprawdź co oferuje serwis Sprytny Excel »

Masz już konto w serwisie?

Zaloguj się

Adres e-mail lub login:

Hasło

Nie pamiętam hasła
- Twój pierwszy krok do lepszych wyników
Oglądaj pełne lekcje i wiedz więcej!
Masz już konto w serwisie?
Zaloguj się »

wiper-pixel