Blog JSystems - uwalniamy wiedzę!

Szukaj

Power Query w Excelu, Power BI i Fabric

Błąd po dodaniu nowego pliku do folderu - łączenie plików w Power Query

W skrócie

  • Do folderu trafia nowy plik, a odświeżenie połączonej tabeli kończy się błędem, na przykład Expression.Error: Klucz nie pasuje do żadnego wiersza w tabeli. Jeden niepasujący plik zatrzymuje całe zapytanie.
  • Funkcja Przekształć plik powtarza kroki zapisane dla pliku przykładowego: nazwę arkusza, liczbę wierszy tytułowych i typ pliku. Plik z inną nazwą arkusza, dodatkowym wierszem albo innego typu tych założeń nie spełnia.
  • Znajdź winny plik poleceniem Zachowaj błędy na kolumnie z wynikiem funkcji i odczytaj jego nazwę z Source.Name. Potem filtruj pliki po rozszerzeniu, wybieraj arkusz po rodzaju i szukaj nagłówka po treści.

Łączenie plików z folderu działa, dopóki każdy nowy plik wygląda jak poprzednie. Wystarczy, że ktoś zapisze miesięczny skoroszyt z arkuszem o innej nazwie, doda wiersz nad nagłówkiem albo wrzuci do folderu notatkę, a odświeżenie się zatrzymuje. Power Query zgłasza błąd po dodaniu pliku do folderu dla całego zapytania, choć winny jest jeden plik. Pokazujemy, jak go znaleźć i jak zabezpieczyć zapytanie przed kolejnymi takimi plikami.

Jak to wygląda w praktyce

Po dodaniu pliku za kolejny miesiąc i kliknięciu Odśwież wszystko zapytanie się zatrzymuje, a w edytorze ostatni krok zapytania głównego pokazuje żółty pasek z komunikatem. Jego treść zależy od przyczyny. Sprawdziliśmy w polskim Excelu trzy typowe przypadki:

  • skoroszyt ma arkusz Maj zamiast Arkusz1: Expression.Error: Klucz nie pasuje do żadnego wiersza w tabeli. (ang. The key didn't match any rows in the table.),
  • w folderze ze skoroszytami pojawił się plik CSV: DataFormat.Error: Zewnętrzna tabela nie ma oczekiwanego formatu. (ang. External table is not in the expected format.),
  • nowy plik ma dodatkowy wiersz nad nagłówkiem: komunikatu nie ma, ale po usunięciu stałej liczby wierszy nagłówkiem zostaje pusty wiersz i kolumny dostają złe nazwy, więc w połączonej tabeli wiersze z tego pliku mają puste kolumny.

W pierwszych dwóch przypadkach błąd jednego pliku zatrzymał cały krok rozwijania, więc nie załadowały się także poprawne pliki.

Dlaczego tak się dzieje

Łączenie plików zapisuje kroki dla pliku przykładowego w zapytaniu Przekształć przykładowy plik, a funkcja Przekształć plik powtarza je dla każdego pliku z folderu. Każdy krok coś zakłada. Przy skoroszytach krok nawigacji wybiera arkusz po nazwie, w wyrażeniu w rodzaju Źródło{[Item="Arkusz1",Kind="Sheet"]}[Data]. Gdy arkusza o tej nazwie nie ma, wyszukanie wiersza po kluczu kończy się błędem. Dokumentacja Microsoft opisuje ten komunikat podobnie: silnik nie znajduje tabeli, której szuka, na przykład po zmianie jej nazwy w źródle.

Krok usuwający trzy pierwsze wiersze zakłada stałą liczbę wierszy tytułowych, a funkcja czytająca skoroszyt nie odczyta pliku CSV ani notatki. Błąd w jednym pliku trafia do kolumny z wynikiem funkcji jako Error, a krok rozwijania, który musi odczytać tabelę z każdego pliku, zatrzymuje się na nim. W naszym teście z dwóch skoroszytów, z których jeden miał arkusz o innej nazwie, rozwinięcie skończyło się błędem dla całej tabeli.

Jak to rozwiązać krok po kroku

  1. Otwórz zapytanie główne, na przykład Sprzedaz_miesieczna, i kliknij krok Usunięto inne kolumny1. Zostały w nim dwie kolumny: Source.Name z nazwą pliku i Przekształć plik z wynikiem funkcji. W wierszu winnego pliku komórka pokazuje Error.
  2. Zaznacz kolumnę Przekształć plik, na karcie Strona główna rozwiń Zachowaj wiersze i wybierz Zachowaj błędy. Power Query zapyta w oknie Wstawianie kroku, czy dodać krok w środku listy: potwierdź. Zostaną tylko wiersze z błędem, a Source.Name pokaże winny plik, w naszym teście Nordvella_sprzedaz_2026-05.xlsx. Kliknij w puste miejsce komórki z napisem Error, żeby odczytać komunikat.
  3. Otwórz winny plik w Excelu i porównaj go z plikiem przykładowym: nazwę arkusza, wiersz, w którym zaczyna się nagłówek, i nazwy kolumn. Po diagnozie usuń krok Zachowaj błędy krzyżykiem.
  4. Jeśli zmieniła się nazwa arkusza, wybieraj arkusz po rodzaju, a nie po nazwie. W zapytaniu Przekształć przykładowy plik zamień krok nawigacji na = Table.SelectRows(Źródło, each [Kind] = "Sheet"){0}[Data]. Funkcja weźmie pierwszy arkusz pliku bez względu na jego nazwę: w naszym teście odczytała skoroszyt z arkuszem Maj bez błędu.
  5. Jeśli do folderu trafiają pliki innego typu, dodaj w zapytaniu głównym, zaraz po kroku Źródło, filtr kolumny Extension, na przykład = Table.SelectRows(Źródło, each Text.Lower([Extension]) = ".xlsx"). Text.Lower sprawia, że przejdą też pliki z rozszerzeniem zapisanym wielkimi literami. Możesz też filtrować po początku nazwy pliku, na przykład Nordvella_sprzedaz.
  6. Jeśli zmienia się liczba wierszy nad nagłówkiem, pomijaj wiersze aż do nagłówka zamiast stałej liczby. W zapytaniu Przekształć przykładowy plik zamień krok Usunięto pierwsze wiersze na = Table.Skip(Źródło, each [Column1] <> "Data"). W naszym teście plik z dodatkowym wierszem tytułu dał po tej zmianie nagłówki Data i Kwota, a stałe pominięcie trzech wierszy dało pusty nagłówek.
  7. Nie zastępuj diagnozy poleceniem Usuń błędy na kolumnie z wynikiem funkcji ani polem Pomiń pliki z błędami w oknie Połącz pliki. W naszym teście usunięcie wierszy z błędami zostawiło w wyniku tylko plik za kwiecień, a dane za maj zniknęły bez żadnego komunikatu.
Menu Zachowaj wiersze w edytorze Power Query z pozycjami zachowywania pierwszych i ostatnich wierszy, zakresu, duplikatów i błędów
Menu Zachowaj wiersze z pozycją Zachowaj błędy na końcu listy. Polecenie zostawia tylko wiersze z błędami, co pozwala szybko znaleźć przyczynę w dużej tabeli.

Jak sprawdzić, że zadziałało

Po poprawkach odśwież zapytanie. Krok rozwijania przechodzi bez żółtego paska, a filtr kolumny Source.Name pokazuje nowy plik na liście. Policz wiersze z nowego pliku filtrem Source.Name i porównaj z liczbą wierszy w samym pliku. W kursie ten sam test, czyli dodanie pliku za maj i Odśwież wszystko, powiększył zestawienie z 60 do 75 wierszy bez zmiany żadnego kroku.

Żeby problem nie wrócił, ustal z osobami, które zapisują pliki, stałą nazwę arkusza i układ eksportu, a w zapytaniu zostaw filtr po rozszerzeniu i nazwie oraz wybór arkusza po rodzaju. Plik od nowej osoby albo z nowego systemu sprawdź najpierw w kopii folderu, w której jest tylko ten jeden plik, i dopiero potem dołóż go do właściwego folderu.

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

Co oznacza błąd Klucz nie pasuje do żadnego wiersza w tabeli przy łączeniu plików?
Krok szuka w pliku wiersza o konkretnym kluczu, najczęściej arkusza o zapisanej nazwie, na przykład Arkusz1, i go nie znajduje. W naszym teście komunikat pojawił się dla skoroszytu z arkuszem Maj. Wybieraj arkusz po rodzaju albo pozycji, a nie po nazwie, i sprawdź nazwę arkusza w nowym pliku.
Dlaczego jeden zły plik zatrzymuje całe zapytanie?
Krok rozwijania kolumny z wynikiem funkcji musi odczytać tabelę z każdego pliku. W naszym teście błąd jednego skoroszytu zatrzymał rozwinięcie dla obu plików. Znajdź winny plik poleceniem Zachowaj błędy i popraw go albo odfiltruj.
Czy mogę po prostu pominąć pliki z błędami?
Możesz, ale stracisz dane bez ostrzeżenia. W naszym teście usunięcie wierszy z błędami zostawiło tylko plik za kwiecień, a maj zniknął bez komunikatu. Bezpieczniej znaleźć przyczynę i poprawić zapytanie albo plik.
Skąd błąd DataFormat.Error: Zewnętrzna tabela nie ma oczekiwanego formatu?
Funkcja czytająca skoroszyt Excela dostała plik, który skoroszytem nie jest, na przykład CSV albo notatkę zapisaną w tym samym folderze. W naszym teście tak zachował się plik CSV podany funkcji Excel.Workbook. Dodaj filtr kolumny Extension, żeby do łączenia trafiały tylko pliki jednego typu.

Komentarze (0)

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

Brak komentarzy...