Wszystkie artykuły

KajoData / Excel

Błędy w Excelu: jak znaleźć przyczynę i naprawić formułę

Prowadzę od komunikatu do danych i odwołań. Pokazuję, jak rozpoznać przyczynę, sprawdzić poprawkę i świadomie obsłużyć brak wartości.

Kajo RudzińskiOpublikowano Aktualizacja 11 min czytania

Lupa wskazuje przesuniętą komórkę w uporządkowanej siatce

Błąd w Excelu daje wskazówkę, od czego zacząć sprawdzanie. Problem pojawia się wtedy, gdy próbujesz usunąć komunikat, zanim ustalisz jego przyczynę. Łatwo wtedy zamienić brak ceny na zero, a uszkodzone odwołanie na pustą komórkę. Raport wygląda spokojnie, tylko coraz mniej wiadomo, co naprawdę policzył.

Ja zaczynam od jednej komórki i pytania: jakiego wyniku oczekuję oraz z jakich danych ma on powstać? Dopiero potem czytam kod błędu. W tym poradniku przechodzę przez najczęstsze sytuacje, pokazuję małe przykłady syntetyczne i rozdzielam naprawę od świadomej obsługi przewidywanego braku. Nie każdy problem wymaga innej funkcji; często wystarczy poprawić źródło albo zakres.

Najpierw ustal, co właściwie widzisz

Formuła może zostać odrzucona podczas wpisywania, komórka może pokazać wartość błędu, a obliczenie może zakończyć się zwykłą, lecz niewłaściwą liczbą. To trzy różne sytuacje. Gdy Excel nie przyjmuje zapisu, sprawdź nazwę funkcji, nawiasy, cudzysłowy i separator argumentów. Gdy pokazuje błąd, prześledź wskazane komórki. Gdy wynik wygląda poprawnie, porównaj go z oczekiwaniem policzonym na kilku rekordach.

Microsoft opisuje reguły wykrywania błędów, ale zaznacza, że nie gwarantują one poprawności całego arkusza. Zielony trójkąt jest sygnałem do sprawdzenia, a jego brak nie stanowi potwierdzenia jakości raportu. Szczególnie pilnuj formuł, które ktoś ręcznie zastąpił liczbą albo skopiował z innego okresu.

Kody zależą od języka programu. W angielskich materiałach zobaczysz #NAME?, #VALUE! czy #REF!, a w polskim Excelu odpowiednio #NAZWA?, #ARG! oraz #ADR!. W przykładach używam polskich nazw funkcji i średników. Jeśli pracujesz w innej konfiguracji, najpierw dopasuj zapis, żeby nie diagnozować problemu stworzonego przez samo przepisywanie instrukcji.

#NAZWA?: sprawdź nazwę i dostępność funkcji

Ten komunikat oznacza, że Excel nie rozpoznaje tekstu użytego w formule. Przyczyną może być literówka w nazwie funkcji, nieistniejąca nazwa zakresu lub tekst bez cudzysłowu. Instrukcja Microsoft dla #NAME? zaleca poprawienie składni zamiast maskowania problemu przez IFERROR.

Jeżeli chcesz wyświetlić słowo „gotowe”, zapisujesz ="gotowe". Bez cudzysłowów Excel może potraktować tekst jako nazwę. Podobnie funkcja skopiowana z obcojęzycznego poradnika może wymagać lokalnej nazwy. Korzystaj z podpowiedzi przy wpisywaniu albo z okna Wstaw funkcję. Nie wymyślaj tłumaczenia, nawet jeśli brzmi bardzo logicznie.

Dobrym przykładem jest CZY.BRAK, polski odpowiednik ISNA. Nazwa CZY.ND spotykana w starych materiałach nie jest jej poprawnym zamiennikiem. Katalog funkcji Microsoft pozwala potwierdzić właściwą nazwę. Taką pomyłkę naprawiasz u źródła; komunikat „brak danych” dopisany wokół błędnej nazwy niczego nie wyjaśni.

Sprawdź również wersję programu. Nowa funkcja może występować w pliku utworzonym na innym komputerze, choć Twoja wersja jej nie oblicza. Zanim przebudujesz cały raport, ustal, w jakim środowisku ma działać. To samo dotyczy funkcji wymagających konkretnego dodatku albo rozwiązania przygotowanego przez autora skoroszytu.

#ARG!: obejrzyj dane użyte w obliczeniu

Błąd #ARG!, czyli #VALUE!, często kieruje do niewłaściwego typu argumentu albo tekstu w miejscu oczekiwanej liczby. Załóżmy, że A2 zawiera liczbę 20, a B2 dosłowny tekst „brak”. Formuła =A2+B2 nie opisuje sensownego dodawania dwóch liczb. Nie poprawiaj jej przez zmianę „brak” na zero bez ustalenia, co oznacza ten wpis.

Poradnik Microsoft omawia między innymi ukryte spacje i daty zapisane jako tekst. Sam wygląd komórki może być mylący. Ustawienie formatu liczbowego nie wystarcza jako dowód, że import rzeczywiście dostarczył liczbę. Zajrzyj do paska formuły i porównaj poprawny oraz wadliwy rekord z tego samego źródła.

Przy eksporcie zwróć uwagę na separator dziesiętny, dopisane jednostki i znaki niewidoczne na pierwszy rzut oka. Najpierw nazwij przyczynę, potem dobierz konwersję. Masowe usuwanie wszystkich spacji w kolumnie nazw mogłoby naprawić jedną operację, a jednocześnie połączyć wyrazy i utrudnić dalsze dopasowanie klientów.

Nie zastępuj też bez zastanowienia dodawania funkcją, która pomija tekst. Wynik może wtedy przestać pokazywać błąd, choć jedna kwota nadal nie uczestniczy w sumie. Twoja kontrola powinna odpowiedzieć, czy wszystkie potrzebne wartości są liczbami, a nie tylko czy komórka z końcowym wynikiem wygląda już poprawnie.

#DZIEL/0!: ustal znaczenie mianownika

Dzielenie przez zero lub pustą komórkę w mianowniku powoduje #DZIEL/0!, angielskie #DIV/0!. Dokumentacja Microsoft opisuje oba przypadki. W syntetycznym przykładzie A2 to liczba wykonanych zadań, B2 to liczba zaplanowanych. Dla A2 równego 3 i B2 równego 0 nie da się obliczyć zwykłego udziału przez =A2/B2.

Najpierw sprawdź, dlaczego plan wynosi zero. Może to poprawna sytuacja bez przydzielonych zadań. Może brakować importu. Może odwołanie wskazuje pusty wiersz poniżej danych. Każda przyczyna wymaga innego działania, mimo identycznego komunikatu w komórce. W raporcie warto je odróżnić, zanim trafią do jednego wspólnego statusu.

Jeśli licznik i mianownik są poprawnymi liczbami, a zerowy plan ma być jawnie komunikowany, możesz zapisać:

=JEŻELI(B2=0;"brak podstawy";A2/B2)

Dla 3 i 0 dostaniesz tekst „brak podstawy”, dla 3 i 6 wynik 0,5. Formuła realizuje wybraną regułę prezentacji. Nie potwierdza poprawności pozostałych danych i nie czyni pustego planu równoważnym rzeczywistemu zeru. Jeśli rozróżnienie jest istotne, kontroluj kompletność źródła w osobnym miejscu.

Zera w raportach mają znaczenie. Udział równy zero może oznaczać, że nic nie wykonano przy istniejącym planie. Brak mianownika oznacza, że udziału nie wyznaczono. Połączenie tych sytuacji w jedną liczbę utrudnia późniejsze średnie i porównania. Dlatego najpierw zapisuję regułę biznesową, a dopiero potem formułę obsługującą przypadek.

#ADR!: wróć do wskazywanego miejsca

#ADR!, czyli #REF!, oznacza nieprawidłowe odwołanie. Częsty powód to usunięcie używanej komórki, wiersza albo kolumny. Innym jest wskazanie w funkcji pozycji poza dostępnym zakresem. Microsoft pokazuje oba przypadki, w tym WYSZUKAJ.PIONOWO proszące o kolumnę, której w podanej tabeli nie ma.

Jeżeli cennik zajmuje A2:B4, ma dwie kolumny. Wskazanie numeru 3 jako kolumny wyniku jest błędne, nawet gdy w arkuszu obok istnieje kolumna C. Funkcja liczy pozycję wewnątrz przekazanego zakresu. Sprawdź więc cały argument zakresu i numer zwracanej kolumny, zamiast szukać brakującego produktu.

Jeśli problem pojawił się tuż po usunięciu kolumny, cofnij zmianę, o ile nadal możesz to zrobić bez utraty innych potrzebnych poprawek. Następnie ustal, czy kolumna rzeczywiście miała zniknąć, i przebuduj zależne formuły. Nie zgaduj starego adresu na podstawie obecnego układu. Porównaj kopię pliku albo zapytaj autora o znaczenie pola.

Warto odróżnić usunięcie kolumny od wyczyszczenia jej zawartości. Te operacje mają inny skutek dla adresów i dla danych. Podczas porządkowania raportu najpierw sprawdzaj zależności, a dopiero potem usuwaj pola uznane za zbędne. To szczególnie ważne w skoroszycie, który ma wiele arkuszy i kilka oddzielnych podsumowań.

#N/D!: sprawdź klucz i dopasowanie

Angielskie #N/A, w polskiej dokumentacji #N/D!, często pojawia się przy braku dopasowania w wyszukiwaniu. Microsoft wymienia między innymi WYSZUKAJ.PIONOWO i PODAJ.POZYCJĘ. Załóżmy, że cennik A2:B3 zawiera P01 z ceną 10 i P02 z ceną 20, a w E2 szukasz P03.

=WYSZUKAJ.PIONOWO(E2;$A$2:$B$3;2;FAŁSZ)

Dokładne dopasowanie nie znajdzie P03. Zanim dodasz obsługę błędu, sprawdź zakres i kod. Czy produkt powinien już istnieć w cenniku? Czy źródło zostało odświeżone? Czy zera na początku kodu albo dodatkowa spacja nie zmieniły klucza? Taka diagnoza często rozwiązuje problem bez zmiany samej funkcji.

Jeżeli brak produktu jest przewidywany, możesz pokazać jawny komunikat:

=JEŻELI.ND(WYSZUKAJ.PIONOWO(E2;$A$2:$B$3;2;FAŁSZ);"brak w cenniku")

JEŻELI.ND, czyli IFNA, zastępuje konkretnie błąd braku wartości. Uszkodzone odwołanie nadal powinno być widoczne. Do samego rozpoznania rodzaju błędu służy CZY.BRAK. Rozdzielenie diagnozy i prezentacji ułatwia utrzymanie raportu.

#ROZLANIE!: sprawdź miejsce na tablicę

Formuły tablic dynamicznych mogą zwrócić wynik do wielu komórek. #ROZLANIE!, angielskie #SPILL!, sygnalizuje problem z umieszczeniem takiego wyniku. Powodem bywa zajęta komórka, scalenie, granica arkusza albo formuła rozlewająca się wewnątrz tabeli Excela. Instrukcja Microsoft opisuje te odrębne przypadki.

Jeśli formuła potrzebuje czterech wierszy pod komórką, obejrzyj cały planowany obszar. Widoczna pustka może zawierać spację albo inną formułę. Nie kasuj otoczenia w ciemno. Najpierw ustal, co blokuje wynik i czy blokująca zawartość jest potrzebna. Czasami lepsze będzie przeniesienie formuły niż przebudowa istniejącego raportu.

Jedna kostka blokuje obszar, po którym ma rozlać się wynik

Przy źródle zapisanym jako tabela umieść formułę rozlewającą się poza nią. Nie trzeba porzucać tabeli jako źródła danych tylko dlatego, że wynik potrzebuje osobnego miejsca. Dalsze przykłady znajdziesz w haśle UNIKATOWE, gdzie różnica między źródłem i obszarem wyniku jest dobrze widoczna.

Kiedy użyć JEŻELI.BŁĄD

JEŻELI.BŁĄD, czyli IFERROR, zwraca wskazaną wartość, gdy obliczenie daje błąd, a w przeciwnym razie przekazuje wynik. Funkcja obsługuje wiele rodzajów błędów, więc komunikat „brak danych” może ukryć zarówno brak dopasowania, jak i pomyloną nazwę funkcji. Zakres tej obsługi powinien być świadomą decyzją.

Ja sięgam po nią dopiero wtedy, gdy wiem, co może pójść źle i jak odbiorca ma o tym usłyszeć. Dla pojedynczego oczekiwanego braku dopasowania często wystarczy węższe JEŻELI.ND. Dla diagnozy zostawiam dostęp do oryginalnej wartości albo osobną kolumnę statusu. Dzięki temu liczba problematycznych rekordów nie znika wraz z komunikatami na ekranie.

Pusty tekst także wymaga ostrożności. Odbiorca może uznać pustą komórkę za brak rekordu, pole jeszcze niewypełnione albo wynik równy zero. Wybierz opis zgodny z tym, co faktycznie wiesz. Jeżeli źródło jest niekompletne, poinformuj o tym obok podsumowania, zamiast pozwalać czytelnikowi traktować częściowy wynik jako pełny raport.

Procedura sprawdzenia przed oddaniem raportu

Zapisz kopię pliku do pracy i wybierz jeden błędny rekord. Odczytaj formułę, jej argumenty oraz kilka komórek źródłowych. Obok zanotuj oczekiwany wynik i uzasadnienie. Popraw jedną przyczynę, potem sprawdź ten sam przypadek oraz sąsiedni poprawny wiersz. Taki sposób ogranicza ryzyko, że poprawisz jeden przykład kosztem pozostałych.

Po zmianie porównaj liczbę rekordów i sumy kontrolne. Jeżeli wcześniej trzy produkty nie miały ceny, ustal, czy teraz faktycznie otrzymały poprawne ceny, czy tylko zniknęły ich ostrzeżenia. To dwa różne rezultaty. Warto też sprawdzić, czy kopiowanie formuły nie przesunęło słownika i czy ostatni dopisany wiersz jest objęty zakresem.

Następnie przeprowadź małe ćwiczenie. Wprowadź poprawny produkt, produkt nieobecny w słowniku, zerowy mianownik i tekst w polu kwoty. Przed każdym przypadkiem powiedz, czego oczekujesz. Po sprawdzeniu przywróć właściwe dane. Tak poznajesz granice rozwiązania i możesz opisać je kolejnej osobie bez zapewnienia, że „powinno działać”.

Jeśli wynik nadal budzi wątpliwości, ogranicz przykład do kilku komórek. Zapisz wersję Excela, język, dokładną formułę, wartości wejściowe i oczekiwanie. Pomoc staje się wtedy znacznie prostsza, bo rozmowa dotyczy konkretnego przypadku. Nie musisz udostępniać całego raportu ani prawdziwych danych, żeby pokazać sam mechanizm problemu.

Jak zapobiegać powrotowi tego samego błędu

Naprawa jednego rekordu może być początkiem trwałej poprawy procesu. Jeżeli za każdym importem kwoty przychodzą jako tekst, opisz regułę konwersji podczas wczytywania. Jeżeli giną kody z zerami na początku, ustal typ tekstowy już w źródle importu. Ręczne poprawienie trzech komórek pomoże dziś, lecz kolejny plik może odtworzyć dokładnie ten sam problem.

Gdy często zmienia się cennik, zapisz jego właściciela i miejsce pobierania aktualnej wersji. Osoba przygotowująca raport powinna wiedzieć, czy brak ceny jest nowym produktem, nieaktualnym słownikiem czy błędem klucza. To nie wymaga wielkiego systemu. Krótka instrukcja i jawny status rekordów potrafią wystarczyć przy małym, dobrze opisanym procesie.

Wspólny plik uzupełnij o informację, które kolumny służą do wpisywania, które do obliczeń i gdzie sprawdzić jakość danych. Użytkownik nie powinien odgadywać, czy wolno nadpisać formułę. Jeśli wynik trzeba odświeżyć, nazwij ten krok. Ograniczasz wtedy liczbę sytuacji, w których poprawny arkusz pokazuje stary stan i zostaje błędnie uznany za aktualny.

Na końcu zapytaj, czy raport nadal odpowiada na właściwe pytanie. Brak komunikatów błędu nie wyłapie podwójnie policzonego zamówienia, niewłaściwego miesiąca ani pomylonej jednostki. Do tego potrzebujesz kontroli znaczenia danych. Jeśli dopiero budujesz takie nawyki, przejdź przez plan nauki Excela i zachowuj małe przykłady, w których wynik umiesz uzasadnić samodzielnie.

Przykład decyzji po znalezieniu brakującej ceny

Wyobraź sobie trzy pozycje zamówienia: dwie mają prawidłowe ceny, a trzecia dotyczy nowego kodu P03. Wyszukiwanie zwraca dla niego brak dopasowania. Masz już diagnozę techniczną, ale do zamknięcia zadania potrzebujesz jeszcze decyzji o wyniku. Czy raport może pokazać sumę tylko znanych pozycji? Czy ma czekać na uzupełnienie cennika? Odpowiedź zależy od celu zestawienia.

Ja rozdzieliłbym wartość znanych pozycji od informacji o kompletności. Odbiorca widzi wtedy, co zostało policzone i ile rekordów wymaga wyjaśnienia. Samo zastąpienie brakującej ceny zerem mogłoby sugerować bezpłatny produkt. Samo ukrycie wiersza mogłoby sugerować, że zamówienie go nie zawiera. Jawny opis pozwala podjąć decyzję bez zgadywania, co zrobiła formuła.

Kiedy cennik zostanie uzupełniony, wróć do tego samego kodu i sprawdź jego wynik. Następnie porównaj pozostałe ceny, żeby upewnić się, że zmiana zakresu albo układu tabeli nie przesunęła zwracanej kolumny. Na koniec sprawdź sumę całego przykładu. Poprawiona komórka jest jednym elementem kontroli, lecz raport składa się z zależnych od siebie obliczeń.

Podobny tok postępowania zastosuj przy braku planu albo niepoprawnej dacie. Nazwij przyczynę, ustal regułę i sprawdź skutek dla końcowej odpowiedzi. Zapisz regułę w krótkiej instrukcji obok pliku. Dzięki temu następna osoba nie zmieni „brak podstawy” na zero wyłącznie dlatego, że wtedy łatwiej zrobić kolorowy wykres. To właśnie takie drobne decyzje przesądzają, czy arkusz pozostanie zrozumiały po kilku kolejnych aktualizacjach.

Najważniejsze w pigułce

Czy każdy błąd zamienić na zero?

Nie. Zero ma konkretne znaczenie, a brak ceny, uszkodzone odwołanie i zerowy mianownik wymagają różnych decyzji.

Czym różnią się JEŻELI.ND i JEŻELI.BŁĄD?

JEŻELI.ND obsługuje błąd #N/D!, a JEŻELI.BŁĄD wiele rodzajów błędów. Wybierz zakres obsługi po diagnozie przyczyny.

Czy brak błędów oznacza poprawny raport?

Nie. Nadal sprawdź zakres, okres, jednostki, duplikaty i sumy kontrolne.

Przy pracy nad artykułem użyto w zautomatyzowany sposób sztucznej inteligencji. Jeśli też chcesz tak umieć, sprawdź ten projekt.

Kajo Rudziński

Newsletter KajoData

Zostańmy w kontakcie.

Piszę o analizie danych, uczeniu się i zmianie pracy. Dzielę się tym, co pomaga mi ogarniać technologię i zawodowe decyzje. Jeśli lubisz ten sposób myślenia, zapraszam do mojego newslettera.