Blog JSystems - uwalniamy wiedzę!

Szukaj

Power Query w Excelu, Power BI i Fabric

Expression.Error: Jest za mało elementów w wyliczeniu, aby można było zakończyć operację

W skrócie

  • Komunikat Power Query „Jest za mało elementów w wyliczeniu, aby można było zakończyć operację” pojawia się, gdy krok pobiera element listy albo wiersz tabeli, którego nie ma, na przykład pierwszy element pustej listy.
  • Pusta lista powstaje przy pustym folderze, filtrze, który niczego nie zwrócił, albo wyszukiwaniu bez trafienia. Zapytanie Przykładowy plik przy łączeniu folderu pobiera pierwszy plik fragmentem {0}.
  • Najpierw ustal, dlaczego lista jest pusta. Potem zabezpiecz krok funkcją List.First z wartością domyślną, sprawdzeniem Table.IsEmpty albo własnym, czytelnym komunikatem błędu.

Komunikat Power Query „Jest za mało elementów w wyliczeniu” dotyczy elementów listy albo wierszy tabeli i nie wskazuje wprost pliku ani kolumny. Trafia na niego każdy, kto łączy pliki z folderu, w którym nagle nie ma pasujących plików, albo pisze formuły pobierające pierwszy wiersz wyniku filtra. Pokazujemy, jak znaleźć pustą listę, ustalić, dlaczego jest pusta, i zabezpieczyć zapytanie tak, żeby zamiast ogólnego błędu dostać czytelną informację.

Jak to wygląda w praktyce

Komunikat ma pełną postać:

Expression.Error: Jest za mało elementów w wyliczeniu, aby można było zakończyć operację.

Angielski oryginał to Expression.Error: There weren't enough elements in the enumeration to complete the operation. Gdy błąd stoi w kroku, od którego zależą kolejne, zatrzymuje całe zapytanie i zamiast danych widać żółty pasek.

Przy łączeniu plików z folderu błąd pokazuje zapytanie pomocnicze Przykładowy plik, a razem z nim zapytanie główne. W kolumnie niestandardowej, która pobiera pierwszy wiersz wyniku filtra, błąd dostają tylko wiersze bez trafienia. W naszym teście kolumna z kursem waluty dała kurs dla EUR i Error dla waluty, której nie było w tabeli kursów.

Dlaczego tak się dzieje

Zapis {0} pobiera pierwszy element listy albo pierwszy wiersz tabeli, {1} drugi i tak dalej, licząc od zera. Jeśli lista ma mniej elementów, niż wymaga numer, silnik zgłasza ten błąd. Sprawdziliśmy w Excelu trzy postaci: pierwszy element pustej listy, pierwszy wiersz tabeli bez wierszy i drugi element listy jednoelementowej. Każda daje ten sam komunikat.

Pusta lista bierze się z kilku typowych miejsc:

  • łączenie plików z folderu: zapytanie Przykładowy plik wybiera pierwszy plik z listy fragmentem {0}[Content], a lista jest pusta, bo folder jest pusty, parametr ze ścieżką wskazuje inny folder albo filtr po nazwie lub rozszerzeniu odrzucił wszystkie pliki,
  • wyszukiwanie: funkcja albo kolumna filtruje tabelę i bierze pierwszy wiersz, a filtr nic nie znalazł, na przykład kursu waluty, której nie ma w tabeli,
  • podział tekstu: Text.Split([Nr paragonu], "-"){1} pobiera drugi fragment, a w danych trafia się numer bez myślnika.

W kodzie przepływu danych z naszego kursu zapytanie Przykładowy plik kończy się krokiem Nawigacja = #"Filtrowano pliki ukryte"{0}[Content], a zapytanie główne pobiera nazwy kolumn do rozwinięcia z wyniku dla tego pliku. Dlatego pusta lista plików zatrzymuje oba zapytania. W naszym teście folder z jednym plikiem CSV i ukrytym plikiem ~$dane.xlsx po filtrze na widoczne pliki .xlsx dał pustą listę i dokładnie ten błąd.

Jak to rozwiązać krok po kroku

  1. Kliknij krok z błędem i znajdź w pasku formuły numer w klamrach, na przykład {0}. Potem kliknij krok, do którego ta formuła się odwołuje. Jeśli jest pusty, znalazłeś przyczynę i trzeba ustalić, dlaczego nic w nim nie ma.
  2. Przy łączeniu folderu otwórz zapytanie Przykładowy plik i kliknij jego pierwszy krok. Sprawdź, czy ścieżka prowadzi do właściwego folderu i czy są w nim pliki. Jeśli ścieżkę podaje parametr, na karcie Strona główna rozwiń Zarządzaj parametrami i sprawdź jego wartość bieżącą. Przykładowy plik ma własny krok Źródło, więc jeśli parametr podpiąłeś tylko w zapytaniu głównym, ścieżkę popraw także tutaj.
  3. Przejrzyj kolejne kroki listy plików: filtr ukrytych plików, filtr po rozszerzeniu i po początku nazwy. Filtr na nazwy zaczynające się od „Nordvella_sprzedaz_2026” zwróci pustą listę, gdy pliki zaczną mieć w nazwie kolejny rok.
  4. Zabezpiecz odwołania tam, gdzie pusty wynik jest dopuszczalny. List.First(lista, "brak plików") zwraca wartość domyślną zamiast błędu, operator ? po numerze, na przykład Text.Split([Nr paragonu], "-"){1}?, zwraca null, a przy tabelach sprawdzaj pustkę przed pobraniem wiersza: if Table.IsEmpty(Wiersz) then null else Wiersz{0}[mid]. Tak zabezpieczona jest nasza funkcja fxKursNBP, która pobiera kurs waluty z tabeli NBP.
  5. Jeśli pusta lista oznacza brak danych, zatrzymaj odświeżanie własnym komunikatem zamiast ładować pusty raport: if Table.IsEmpty(Pliki) then error "Brak plików z danymi w folderze" else Pliki{0}[Content]. W naszym teście Power Query pokazał wtedy Expression.Error: Brak plików z danymi w folderze, czyli informację zrozumiałą bez zaglądania do kodu.
  6. Gdy kolumna niestandardowa dostaje Error tylko w części wierszy, przefiltruj je przez Zachowaj błędy i porównaj szukane wartości z tabelą, w której szukasz. Brakujące pozycje dopisz do tej tabeli albo obsłuż wynik null jednym z zabezpieczeń z poprzedniego punktu.
Edytor zaawansowany Power Query z kodem funkcji kursu walut NBP: Table.SelectRows, a potem if Table.IsEmpty(Wiersz) then null else Wiersz{0}[mid]
Kod funkcji kursu NBP w Edytorze zaawansowanym. Ostatni krok sprawdza Table.IsEmpty, zanim pobierze pierwszy wiersz zapisem Wiersz{0}[mid].

Jak sprawdzić, że zadziałało

Po poprawce kliknij ostatni krok zapytania głównego: powinny być dane. Przy łączeniu folderu zaznacz kolumnę Source.Name, włącz na karcie Widok pole Rozkład kolumn i porównaj liczbę wartości odrębnych z liczbą plików w folderze. Zabezpieczenia przetestuj na pustym przypadku: tymczasowo zmień filtr tak, żeby niczego nie zwracał, i sprawdź, czy dostajesz wartość domyślną, null albo własny komunikat, a nie ogólny błąd. Potem przywróć filtr.

Nawrotom zapobiegniesz, trzymając w folderze źródłowym tylko pliki danych i nie opierając filtrów na fragmentach nazw, które się zmieniają, takich jak rok. Jeśli zabezpieczasz kroki przez null, sprawdzaj po odświeżeniu udział pustych wartości w Jakości kolumn, bo null w miejscu kursu czy pliku to sygnał, który łatwo przeoczyć.

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 wyliczenie w tym komunikacie?
Wyliczenie to przechodzenie po elementach listy albo wierszach tabeli. Zapis z numerem w klamrach, na przykład {0}, każe Power Query dojść do konkretnego elementu. Jeśli lista ma mniej elementów, niż wymaga numer, silnik zgłasza, że jest ich za mało.
Dlaczego łączenie plików z folderu nagle zgłasza ten błąd?
Zapytanie Przykładowy plik pobiera pierwszy plik z listy, a lista jest pusta. Folder mógł zostać opróżniony albo przeniesiony, parametr ze ścieżką może wskazywać inne miejsce, a filtr po nazwie lub rozszerzeniu mógł odrzucić wszystkie pliki. Kliknij pierwszy krok zapytania Przykładowy plik i sprawdź, co widzi Power Query.
Czym różni się List.First od zapisu z zerem w klamrach?
Zapis z zerem w klamrach na pustej liście zgłasza błąd. List.First na pustej liście zwraca null, a jeśli podasz drugi argument, zwraca tę wartość domyślną. Sprawdziliśmy oba zachowania w polskim Excelu.
Czy zabezpieczenie przez null nie ukryje problemu?
Może, jeśli pusta lista oznacza brak danych, na przykład pusty folder z miesięcznymi plikami. Wtedy lepiej zatrzymać odświeżanie własnym komunikatem funkcją error z opisem przyczyny. Null stosuj tam, gdzie brak wyniku jest dopuszczalny, na przykład dla waluty spoza tabeli kursów.

Komentarze (0)

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

Brak komentarzy...