Jednym z częściej pojawiających się błędów w trakcie pracy z Excelem jest błąd #N/D!. Spowodowany jest on najczęściej dwoma rzeczami: odwołaniem do komórki w której występuje taki sam błąd, bądź też w sytuacji gdy funkcja wyszukująca nie może znaleźć pasującej wartości. Niejednokrotnie jego wystąpienie nie oznacza błędu, a zamierzoną sytuację. W takich sytuacjach należy zastanowić się jak obsłużyć ten błąd.
Przed podaniem rozwiązanie tego problemu należy poznać z dokładniejsze przyczyny powstawania tego błędu:
- zastąpienie brakujących danych wartością #N/D!,
- podanie niewłaściwej wartości wyszukiwanej w funkcji WYSZUKAJ.POZIOMO, WYSZUKAJ, PODAJ.POZYCJĘ lub WYSZUKAJ.PIONOWO,
- wykorzystanie funkcji WYSZUKAJ.PIONOWO, WYSZUKAJ.POZIOMO lub PODAJ.POZYCJĘ w celu zlokalizowania wartości w nieposortowanej tabeli,
- użycie formuły tablicowej ze złą liczbą argumentów,
- użycie niestandardowej funkcji, która jest niedostępna,
- uruchomienie makro, które wprowadza funkcję zwracającą wartość #N/D!.
Najczęściej spotykaną przyczyną w trakcie codziennej pracy z Excelem jest podanie niewłaściwej wartości w funkcji wyszukującej. Niejednokrotnie wystąpienie tego błędu nie oznacza od razu błędu w formule, arkuszu. Rozważania będą prowadzone na jednej z bardziej użytecznych funkcji w Excelu – WYSZUKAJ.PIONOWO. W naszym przykładzie służyć ona będzie do podania ceny poszczególnych artykułów na podstawie ich nazwy.
W kolumnach A i B znajduje się lista artykułów z ich cenami. Natomiast w komórkach D2 i D3 wykorzystano formułę WYSZUKAJ.PIONOWO do znalezienia ceny na podstawie nazwy artykułu. Jak widać na rysunku w pierwszym przypadku (D2) zapytano o cenę “Róży” i otrzymano wynik 5 zł. W drugim przypadku zapytano o cenę “Gruszki” i otrzymano wynik #N/D!. Oba przykłady potwierdzają wiedzę teoretyczną.
W drugim przypadku (wyszukiwanie ceny “Gruszki”) należy się zastanowić, czy nie warto zmienić nieczytelnego błędu #N/D! na bardziej czytelny dla użytkownika komunikat. Ma to duże znaczenie, gdy arkusz ma służyć jako raport dla innych osób. W takiej sytuacji nie wskazane jest występowanie różnego rodzaju błędów. Błąd #N/D! można zastąpić komunikatem “Brak ceny”.
Do tego celu można użyć funkcji sprawdzającej czy w komórce występuje błąd #N/D!. Taką funkcją jest CZY.BRAK. Zwraca ona wartość PRAWDAw przypadku wystąpienia błędu #N/D!. Dodatkowo należy zastosować również funkcję JEŻELI:
=JEŻELI(CZY.BRAK(WYSZUKAJ.PIONOWO(“NAZWA_ARTYKUŁU”; $A$2:$B$4; 2; FAŁSZ)); “Brak ceny”; WYSZUKAJ.PIONOWO(“NAZWA_ARTYKUŁU”; $A$2:$B$4; 2; FAŁSZ))
Rozwiązane to sprawdzi się bardzo dobrze w przypadku małych arkuszy kalkulacyjnych. W przypadku dużych ma znaczącą wadę – musi wykonać się dwa razy funkcja WYSZUKAJ.PIONOWO. Lepszym rozwiązaniem jest wykorzystanie funkcji LICZ.JEŻELI. W tym przypadku, jeśli liczba szukanych artykułów wyniesie 0 należy wyświetlić komunikat o braku ceny:
=JEŻELI(LICZ.JEŻELI($A$2:$B$4;”NAZWA_ARTYKUŁU”)>0; WYSZUKAJ.PIONOWO(“NAZWA_ARTYKUŁU”; $A$2:$B$4; 2; FAŁSZ); “Brak ceny”)
Powyższa formułę można dodatkowo uprościć ponieważ Excel wartość 0 traktuje jako FAŁSZ. Dlatego też można opuścić “>0″:
=JEŻELI(LICZ.JEŻELI($A$2:$B$4; “NAZWA_ARTYKUŁU”); WYSZUKAJ.PIONOWO(“NAZWA_ARTYKUŁU “; $A$2:$B$4; 2; FAŁSZ); “Brak ceny”)
Trzecią możliwością jest wykorzystanie funkcji JEŻELI.BŁĄD. Funkcja ta pojawiła się dopiero wraz z Excelem 2007. Pierwszym argumentem tej funkcji jest funkcja obliczana (która może zwrócić błąd), drugim natomiast jest funkcja która ma zostać wykonana w sytuacji wystąpienia błędu – w tym przypadku “Brak ceny”:
=JEŻELI.BŁĄD(WYSZUKAJ.PIONOWO(“NAZWA_ARTYKUŁU”; $A$2:$B$4; 2; FAŁSZ); “Brak ceny”)
Niestety zastosowanie tej funkcji też jest obarczone pewnym błędem. W przypadku pierwszego i drugiego rozwiązania pojawienie się innego błędu niż #N/D! powodowało jego wyświetlenie. Natomiast w tym przypadku za każdym razem pojawi się komunikat “Brak ceny”.
Plik: Przykład z błędem #N/D!