Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Power Query w Excelu, Power BI i Fabric
Wartości #N/D i #DZIEL/0! z Excela jako błędy w Power Query
Błąd #N/D w Power Query, a obok niego #DZIEL/0!, pojawia się przy wczytywaniu skoroszytów z formułami: arkuszy z WYSZUKAJ.PIONOWO, wskaźnikami marży albo realizacji planu. Pokazujemy, jak taki błąd wygląda w edytorze, dlaczego komunikat podaje angielski kod i jak zdecydować między zamianą błędu, usunięciem wiersza a naprawą formuły w źródle. Zachowanie poleceń sprawdziliśmy w polskim Excelu na skoroszycie z marżami sklepów Nordvelli.
W arkuszu źródłowym część komórek pokazuje #N/D, na przykład gdy WYSZUKAJ.PIONOWO nie znalazło kodu, albo #DZIEL/0!, gdy marżę liczono przy zerowej sprzedaży. Po wczytaniu skoroszytu do Power Query te same komórki mają napis Error, a reszta wiersza wygląda normalnie. Kliknięcie w puste miejsce takiej komórki, obok napisu Error, pokazuje pod podglądem komunikat DataFormat.Error: Nieprawidłowa wartość komórki „#N/A”. albo DataFormat.Error: Nieprawidłowa wartość komórki „#DIV/0!”. W angielskim Excelu ten sam komunikat brzmi Invalid cell value '#N/A'.
Power Query podaje kody błędów w wersji angielskiej, choć w polskim arkuszu widzisz #N/D i #DZIEL/0!. Skutki wychodzą dalej: w naszym teście suma kolumny Marża % zakończyła się tym samym błędem, a zmiana typu kolumny na liczbę błędu nie usunęła. Wiersze z błędem wyglądają przy tym na kompletne, bo pozostałe kolumny, takie jak Sklep i Sprzedaż, mają poprawne wartości.
Power Query czyta wartości komórek zapisane w pliku skoroszytu. Dla komórki z formułą jest to jej wynik, więc gdy formuła zwraca błąd, Power Query dostaje błąd i zamienia go na błąd pojedynczej komórki z przyczyną DataFormat.Error. Kod błędu pochodzi z pliku, w którym błędy zapisane są w wersji angielskiej, stąd #N/A i #DIV/0! zamiast #N/D i #DZIEL/0! z polskiego interfejsu. Tak samo przychodzą inne błędy formuł: w naszym teście komórka z błędem #VALUE! dała komunikat z kodem „#VALUE!”.
To błąd na poziomie komórki, a nie całego zapytania. Zapytanie działa, ale operacja, która musi odczytać wartość z błędem, na przykład suma albo średnia kolumny, przejmuje ten błąd. Dlatego jeden #N/D w kolumnie wystarczy, żeby suma w kroku grupowania też pokazała błąd zamiast liczby.
let t = try [#"Marża %"] in if t[HasError] then t[Error][Message] else null. W wierszach z błędem pokaże komunikat, na przykład Nieprawidłowa wartość komórki „#N/A”., a w pozostałych null.Table.ReplaceErrorValues(#"Nagłówki o podwyższonym poziomie", {{"Marża %", null}}). Nie wpisuj odruchowo 0, bo zero zaniżyłoby średnią marżę bez śladu w danych.=JEŻELI.BŁĄD(C2/B2;""). Pusty tekst zwrócony przez taką formułę Power Query zamienia na null przy zmianie typu kolumny na liczbę, co sprawdziliśmy w teście.
Włącz na karcie Widok opcję Jakość kolumn: pod nagłówkiem poprawionej kolumny udział błędów powinien wynosić 0%. Sprawdź też, czy suma albo średnia kolumny liczy się bez błędu, na przykład w kroku Grupowanie według, i porównaj liczbę wierszy z poprzednim wynikiem. Zamiana błędów nie zmienia liczby wierszy, a usunięcie błędów ją zmniejsza: w naszym teście z 5 do 3.
Żeby problem nie wrócił, zostaw w zapytaniu krok zamiany błędów tylko tam, gdzie błąd jest spodziewany, a pozostałe błędy traktuj jako sygnał do poprawki w źródle. Krok Zamienione błędy obejmie przy każdym odświeżeniu wszystkie przyszłe błędy w tej kolumnie, także te, które oznaczałyby nowy problem w danych.
Wróć do listy: 88 najczęstszych pytań i problemów związanych z Power Query
Szkolenie Microsoft Excel - Power Query --> Dwa dni warsztatów z Excela: pobieranie danych z plików, folderów, SharePointa i baz SQL, ich czyszczenie i łączenie w Power Query, praca w języku M, a na koniec model danych i oparta na nim tabela przestawna. Prowadzi Sebastian Stasiak.
To szkolenie może być dofinansowane dla Ciebie z KFS lub BUR.
★★★★★Średnia ocena naszych szkoleń w Google: 5/5
Komentarze (0)
Brak komentarzy...