Blog JSystems - uwalniamy wiedzę!

Szukaj

Power Query w Excelu, Power BI i Fabric

Daty zamieniają dzień z miesiącem po imporcie - amerykański format daty w Power Query

W skrócie

  • Power Query zamienia dzień z miesiącem po imporcie amerykańskiego eksportu: tekst 03/04/2026, czyli 4 marca, staje się 3 kwietnia, a daty z dniem powyżej 12 kończą się błędem DataFormat.Error.
  • Zwykła zmiana typu na Data czyta tekst według ustawień regionalnych skoroszytu, w polskim Excelu jako dzień/miesiąc/rok. Plik zapisany jako miesiąc/dzień/rok trafia więc na niewłaściwy wzorzec.
  • Zmień typ kolumny poleceniem Używając ustawień regionalnych i wskaż kulturę źródła, na przykład Angielski (Stany Zjednoczone). Potem sprawdź daty z dniem większym niż 12.

Power Query zamienia dzień z miesiącem najczęściej wtedy, gdy importujesz eksport z systemu w amerykańskiej wersji: sklepu internetowego, platformy reklamowej albo programu księgowego zagranicznej centrali. Część dat wygląda poprawnie, choć wskazuje inny dzień, a część kończy się błędem. Pokazujemy, skąd bierze się zamiana, jak ją naprawić jednym krokiem i jak sprawdzić wynik.

Jak to wygląda w praktyce

Po imporcie i zmianie typu kolumna Data wygląda na poprawną, bo większość komórek pokazuje daty. Dopiero porównanie z plikiem źródłowym ujawnia, że tekst 03/04/2026 stał się 3 kwietnia, choć system, który zrobił eksport, zapisał tak 4 marca. W tej samej kolumnie część komórek pokazuje Error, a kliknięcie w puste miejsce takiej komórki (nie w sam napis) pokazuje na dole komunikat:

DataFormat.Error: Nie możemy przeanalizować danych wejściowych dostarczonych jako wartość typu Date. W angielskiej wersji Excela: We couldn't parse the input provided as a Date value.

Błąd dotyczy tylko dat z dniem od 13 do 31, na przykład 03/13/2026, bo odczytane jako dzień/miesiąc dają trzynasty miesiąc, którego nie ma. Daty z dniem od 1 do 12 przechodzą bez błędu i są zamienione po cichu. To groźniejsza połowa problemu: sumy miesięczne, filtry zakresu dat i scalanie z kalendarzem liczą się na złych dniach, a nic tego nie sygnalizuje.

Dlaczego tak się dzieje

Tekst 03/04/2026 nie mówi sam, która liczba jest dniem. Rozstrzyga o tym kultura, czyli ustawienia regionalne (ang. locale) użyte przy zamianie tekstu na datę. Zwykła zmiana typu, także automatyczny krok Zmieniono typ dodawany po imporcie, korzysta z ustawień regionalnych skoroszytu. W Power Query w Excelu domyślnie odpowiadają one formatowi regionalnemu systemu, więc przy polskim formacie regionalnym obowiązuje układ dzień/miesiąc/rok.

Sprawdziliśmy to w polskim Excelu. Date.FromText("03/04/2026") bez wskazania kultury zwraca 3 kwietnia 2026, a z opcją [Culture="en-US"] zwraca 4 marca 2026. Tekst 03/13/2026 bez kultury daje błąd DataFormat.Error, a z kulturą en-US zamienia się w 13 marca. Działa to też w drugą stronę: gdy krok ma na sztywno wpisane "en-US", a plik ma zapis dzień/miesiąc/rok, 03/04/2026 staje się 4 marca, a 13/04/2026 kończy się błędem.

Jak to rozwiązać krok po kroku

  1. Usuń automatyczny krok Zmieniono typ krzyżykiem na liście Zastosowane kroki, jeśli zmienia typ kolumny Data. Zobaczysz wtedy surowy tekst z pliku, a nie daty już odczytane według polskiego wzorca.
  2. Ustal format źródła. Poszukaj wartości, w której jedna z liczb przekracza 12: w 11/30/2026 dniem jest druga liczba, więc plik ma układ miesiąc/dzień/rok. W dużym pliku dodaj tymczasową kolumnę niestandardową z formułą Number.From(Text.BetweenDelimiters([Data], "/", "/")) i posortuj ją malejąco. Wartość większa niż 12 na górze oznacza, że druga liczba to dzień.
  3. Kliknij ikonę typu w nagłówku kolumny Data (albo kliknij nagłówek prawym przyciskiem i wybierz Zmień typ) i wybierz ostatnią pozycję listy, Używając ustawień regionalnych.
  4. W oknie Zmienianie typu za pomocą ustawień regionalnych ustaw Typ danych na Data, a w polu Ustawienia regionalne wybierz kulturę źródła. Dla eksportu w układzie miesiąc/dzień/rok będzie to Angielski (Stany Zjednoczone). Zatwierdź przyciskiem OK.
  5. Na liście kroków pojawi się Zmieniono typ z ustawieniami regionalnymi, a w pasku formuły kultura jako trzeci argument, na przykład = Table.TransformColumnTypes(Źródło, {{"Data", type date}}, "en-US"). Kultura działa tylko na kolumny wskazane w tym kroku.
  6. Sprawdź kolumny liczbowe z tego samego eksportu. Amerykański zapis 12.5 z polskimi ustawieniami daje błąd DataFormat.Error: Nie możemy przekonwertować na typ Number. (ang. We couldn't convert to Number.), a z kulturą en-US zamienia się w 12,5. Takie kolumny zmień w tym samym oknie i z tą samą kulturą co daty.
  7. Jeśli wszystkie źródła w skoroszycie pochodzą z jednego zagranicznego systemu, możesz zamiast tego zmienić ustawienia regionalne całego pliku. W edytorze otwórz menu Plik, wybierz Opcje i ustawienia, a potem Opcje zapytania, i w części Bieżący skoroszyt kliknij Ustawienia regionalne. Od tego ustawienia zależy odczyt liczb, dat i godzin w całym pliku, dlatego przy mieszanych źródłach bezpieczniejsza jest kultura wskazana w pojedynczym kroku.
Lista typów danych w Power Query otwierana ikoną w nagłówku kolumny, z ostatnią pozycją Używając ustawień regionalnych
Ikona przy nazwie kolumny otwiera listę typów (na zrzucie kolumna Wartość brutto). Ostatnia pozycja, Używając ustawień regionalnych, rozwiązuje problem dat zapisanych w formacie innego kraju.

Jak sprawdzić, że zadziałało

Dodaj tymczasową kolumnę niestandardową z formułą Date.Day([Data]) i drugą z Date.Month([Data]). Dla tekstu 03/04/2026 odczytanego z kulturą en-US dostaniesz dzień 4 i miesiąc 3. W eksporcie obejmującym cały miesiąc powinny pojawić się dni większe niż 12, a kolumna Data nie może mieć ani jednego błędu. Błędy w dużej tabeli zobaczysz dopiero po przełączeniu profilowania na pasku stanu na Profilowanie kolumn w oparciu o cały zestaw danych, bo domyślnie profil liczy się na pierwszych 1000 wierszach. Na koniec porównaj z plikiem źródłowym jedną znaną datę, najlepiej z dniem od 1 do 12, bo tylko taka zdradzi cichą zamianę.

Żeby problem nie wrócił, ustawiaj typ dat z kulturą źródła od razu w pierwszym kroku zmiany typu i nie przywracaj automatycznego kroku Zmieniono typ. Gdy do folderu albo do zapytania dochodzi nowe źródło z innego systemu, sprawdź jego format daty, zanim dołączysz je do reszty danych. Kontrolne kolumny usuń, gdy wynik się zgadza.

Wróć do listy: 88 najczęstszych pytań i problemów związanych z Power Query

Baner szkolenia Microsoft Excel - Power Query w JSystems z edytorem Power Query na ekranie laptopa

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

Najczęściej zadawane pytania

Dlaczego tylko część dat jest błędna, a reszta wygląda dobrze?
Daty z dniem od 1 do 12 da się odczytać w obu układach, więc Power Query zamienia w nich dzień z miesiącem bez żadnego komunikatu. Daty z dniem od 13 do 31 dają w złym układzie miesiąc, który nie istnieje, i kończą się błędem DataFormat.Error. Poprawnie wyglądające daty z pierwszej grupy są tak samo błędne jak komórki z błędem.
Czy wystarczy zmienić format daty w arkuszu po załadowaniu?
Nie. Format komórki zmienia tylko sposób wyświetlania, a zamiana dnia z miesiącem jest już zapisana w samej wartości daty. Popraw konwersję w Power Query, czyli zmień typ z ustawieniami regionalnymi źródła, i odśwież zapytanie. Ręczna poprawka w arkuszu zniknie przy następnym odświeżeniu.
Skąd Power Query bierze ustawienia regionalne, gdy żadnych nie wskażę?
Z ustawień regionalnych bieżącego skoroszytu, które domyślnie odpowiadają formatowi regionalnemu systemu Windows. Zmienisz je w oknie Opcje zapytania, w części Bieżący skoroszyt. Ta zmiana działa na wszystkie konwersje tekstu w pliku, także na liczby.
Czy w Power BI i w Dataflow Gen2 naprawia się to tak samo?
Tak, bo konwersję wykonuje ten sam silnik Power Query i ta sama funkcja Table.TransformColumnTypes z kulturą w trzecim argumencie. W kursie ustawiamy w Dataflow Gen2 typy z ustawieniami regionalnymi pl, żeby polskie daty i przecinki dziesiętne były czytane poprawnie. W Power Query Online domyślne ustawienia regionalne zmieniasz w opcjach projektu.

Komentarze (0)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...