Błąd po dodaniu nowego pliku do folderu - łączenie plików w Power Query
Udostępnij na:
Spis treści
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
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.
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.
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.
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.
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.
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.
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 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.
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.
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)
Brak komentarzy...