Spis treści
Czy twój VLOOKUP wyciąga złe dane lub nie możesz go w ogóle uruchomić? Ten poradnik pokazuje, jak można szybko naprawić typowe błędy VLOOKUP i pokonać jego główne ograniczenia.
W kilku wcześniejszych artykułach zgłębialiśmy różne aspekty funkcji VLOOKUP w Excelu. Jeśli śledziłeś nas uważnie, do tej pory powinieneś być już ekspertem w tej dziedzinie :)
Jednak nie bez powodu wielu specjalistów od Excela uważa VLOOKUP za jedną z najbardziej zawiłych funkcji Excela. Ma ona tonę ograniczeń, które są źródłem różnych problemów i błędów.
W tym artykule znajdziesz proste wyjaśnienia głównych przyczyn błędów VLOOKUP, takich jak #N/A, #NAME i #VALUE, a także ich rozwiązania i poprawki. Zaczniemy od najbardziej oczywistych powodów, dla których VLOOKUP nie działa, więc dobrym pomysłem może być sprawdzenie poniższych kroków rozwiązywania problemów w kolejności.
Naprawa błędu #N/A w VLOOKUP
W formułach VLOOKUP komunikat o błędzie #N/A (oznaczający "niedostępne") jest wyświetlany, gdy Excel nie może znaleźć wartości lookup. Może być kilka powodów, dla których tak się dzieje.
1. wartość wyszukiwania jest błędnie napisana
Zawsze warto najpierw sprawdzić najbardziej oczywistą rzecz : ) Błędne wydruki zdarzają się często, gdy pracujemy z naprawdę dużymi zbiorami danych składającymi się z tysięcy wierszy lub gdy wartość lookup jest wpisywana bezpośrednio do formuły.
2. #N/A w dopasowaniu przybliżonym VLOOKUP
Jeśli twoja formuła wyszukuje najbliższe dopasowanie, ( range_lookup argument ustawiony na TRUE lub pominięty), błąd #N/A może pojawić się w dwóch przypadkach:
- Wartość lookup jest mniejsza niż najmniejsza wartość w tablicy lookup.
- Kolumna lookup nie jest posortowana w porządku rosnącym.
3. #N/A w dokładnym dopasowaniu VLOOKUP
Jeśli szukasz dokładnego dopasowania ( range_lookup ustawiony na FALSE), błąd #N/A występuje, gdy nie zostanie znaleziona wartość dokładnie równa wartości szukanej. Więcej informacji znajdziesz w rozdziale VLOOKUP dopasowanie dokładne vs. dopasowanie przybliżone.
4. kolumna lookup nie jest najbardziej lewą kolumną tablicy
Jednym z najważniejszych ograniczeń VLOOKUP w Excelu jest to, że nie może on patrzeć w lewo. W związku z tym kolumna lookup powinna być zawsze najbardziej wysunięta na lewo kolumna w tablicy. W praktyce często o tym zapominamy i kończymy z błędami #N/A.
Rozwiązanie : Jeśli nie jest możliwe zrestrukturyzowanie danych tak, aby kolumna lookup była kolumną najbardziej po lewej stronie, można użyć funkcji INDEX i MATCH razem jako alternatywy dla VLOOKUP. Oto przykład formuły: INDEX MATCH Formuła do wyszukiwania wartości po lewej stronie.
5) Liczby są sformatowane jako tekst
Innym częstym źródłem #N/A błędów w formułach VLOOKUP są liczby sformatowane jako tekst, zarówno w tabeli głównej, jak i w tabeli lookup.
Zwykle dzieje się tak, gdy importujesz dane z jakiejś zewnętrznej bazy danych lub gdy wpisałeś apostrof przed liczbą, aby pokazać wiodące zera.
Oto najbardziej oczywiste wskaźniki liczb sformatowanych jako tekst:
Rozwiązanie: Zaznacz wszystkie problematyczne numery, kliknij ikonę błędu i wybierz Zamień na liczbę z menu kontekstowego. Więcej informacji znajdziesz w rozdziale Jak przekonwertować tekst na liczbę w Excelu.
6. spacje wiodące lub ciągnące się
Jest to najmniej oczywista przyczyna błędu VLOOKUP #N/A, ponieważ ludzkie oko z trudem dostrzega te dodatkowe spacje, zwłaszcza podczas pracy z dużymi zbiorami danych, w których większość wpisów znajduje się poniżej przewijania.
Rozwiązanie 1: Dodatkowe spacje w wartości lookup
Aby zapewnić prawidłową pracę formuły VLOOKUP, zawiń wartość looku w funkcję TRIM:
=VLOOKUP(TRIM(E1), A2:C10, 2, FALSE)
Rozwiązanie 2: Dodatkowe spacje w kolumnie lookup
Jeśli w kolumnie lookup występują dodatkowe spacje, nie ma prostego sposobu na uniknięcie błędów #N/A w VLOOKUP. Zamiast tego można użyć kombinacji funkcji INDEX, MATCH i TRIM jako formuły tablicowej:
=INDEX(B2:B10, MATCH(TRUE, TRIM(A$2:A$10)=TRIM(E1), 0))
Ponieważ jest to formuła tablicowa, nie zapomnij nacisnąć Ctrl + Shift + Enter, aby ją poprawnie uzupełnić (w Excelu 365 i Excelu 2021, gdzie tablice są natywne, działa to również jako zwykła formuła).
Wskazówka. Szybką alternatywą jest uruchomienie narzędzia Trim Spaces, które w ciągu kilku sekund wyeliminuje nadmiar spacji zarówno w tabeli lookup, jak i głównej, czyniąc formuły VLOOKUP wolnymi od błędów.
#Błąd w formułach VLOOKUP.
Ogólnie rzecz biorąc, Microsoft Excel wyświetla błąd #VALUE!, jeśli wartość użyta w formule jest niewłaściwego typu danych. W odniesieniu do VLOOKUP istnieją dwa powszechne źródła błędu VALUE!
1. wartość Lookup przekracza 255 znaków
Należy pamiętać, że VLOOKUP nie może wyszukiwać wartości zawierających więcej niż 255 znaków. Jeśli wartości wyszukiwania przekroczą ten limit, zostanie wyświetlony błąd #VALUE!
Rozwiązanie : Zamiast tego należy użyć formuły INDEX MATCH W naszym przypadku formuła ta działa doskonale:
=INDEX(B2:B7, MATCH(TRUE, INDEX(A2:A7= E1, 0), 0))
2. nie podano pełnej ścieżki do skoroszytu wyszukiwania
Jeśli pobieramy dane z innego skoroszytu, musimy dołączyć pełną ścieżkę do niego, a dokładniej zawrzeć nazwę skoroszytu wraz z rozszerzeniem w [nawiasach kwadratowych] oraz podać nazwę arkusza, po której następuje wykrzyknik. Jeśli nazwa skoroszytu lub nazwa arkusza, lub obie zawierają spacje lub jakiekolwiek znaki niealfabetyczne, ścieżka musi być ujęta w pojedynczy cudzysłów.
Oto struktura tablica argument do Vlookup z innego skoroszytu:
'[nazwa skoroszytu]nazwa arkusza'!zakres
Prawdziwy wzór może wyglądać podobnie do tego:
=VLOOKUP($A$2,'[Nowe ceny.xls]Arkusz1'!$B:$D, 3, FALSE)
Powyższa formuła wyszuka wartość A2 w kolumnie B Arkusza1 w. Nowe ceny workbook, i zwrócić pasującą wartość z kolumny D.
Jeśli brakuje jakiegokolwiek elementu ścieżki, twoja formuła VLOOKUP nie będzie działać i zwróci błąd #VALUE (chyba że skoroszyt lookup jest aktualnie otwarty).
Więcej informacji można znaleźć w:
- Jak odwołać się do innego arkusza lub skoroszytu w programie Excel
- Jak zrobić Vlookup z innego skoroszytu
3. argument col_index_num jest mniejszy niż 1
Trudno sobie wyobrazić sytuację, w której ktoś celowo wprowadza liczbę mniejszą niż 1, aby określić kolumnę, z której mają być zwracane wartości. Ale może się to zdarzyć, jeśli ten argument jest zwracany przez jakąś inną funkcję zagnieżdżoną w twojej formule VLOOKUP.
Zatem, jeśli col_index_num argument jest większy niż 1, twoja formuła również zwróci błąd #VALUE!
Jeśli col_index_num jest większa niż liczba kolumn w tablicy, VLOOKUP produkuje błąd #REF!
Rozwiązywanie błędu VLOOKUP #NAME
Jest to najprostszy przypadek - błąd #NAME? pojawia się, jeśli przypadkowo źle wpisałeś nazwę funkcji.
Rozwiązanie jest oczywiste - sprawdź pisownię :)
Główne przyczyny błędów w Excelu VLOOKUP
Oprócz dość skomplikowanej składni, VLOOKUP ma prawdopodobnie więcej ograniczeń niż jakakolwiek inna funkcja Excela. Z powodu tych ograniczeń, pozornie poprawna formuła może często przynieść wyniki inne niż oczekiwane. Poniżej znajdziesz rozwiązania dla kilku typowych scenariuszy, w których VLOOKUP zawodzi.
W VLOOKUP nie jest rozróżniana wielkość liter.
Funkcja VLOOKUP nie rozróżnia wielkości liter i podjada małe i duże znaki jako identyczne.
Rozwiązanie : Użyj VLOOKUP, XLOOKUP lub INDEX MATCH w połączeniu z funkcją EXACT, która może dopasować wielkość tekstu. Szczegółowe wyjaśnienia i przykłady formuł znajdziesz w tym samouczku: 5 ways to do a case-sensitive Vlookup in Excel.
Nowa kolumna została wstawiona lub usunięta z tabeli
Niestety, formuły VLOOKUP przestają działać za każdym razem, gdy nowa kolumna zostanie usunięta lub dodana do tablicy lookup. Dzieje się tak, ponieważ składnia funkcji VLOOKUP wymaga zdefiniowania numeru indeksu zwracanej kolumny. Gdy nowa kolumna jest dodawana/usuwana z tablicy, oczywiście ten numer indeksu się zmienia.
Rozwiązanie : Formuła INDEX MATCH znów przychodzi na ratunek : ) Dzięki INDEX MATCH określasz zakresy szukania i zwracania osobno, więc możesz swobodnie usuwać lub wstawiać tyle kolumn, ile chcesz, nie martwiąc się o aktualizację każdej powiązanej formuły.
Odwołania do komórek zmieniają się podczas kopiowania formuły do innych komórek
Nagłówek daje wyczerpujące wyjaśnienie problemu, prawda?
Rozwiązanie : Zawsze używaj odwołań bezwzględnych (ze znakiem $) dla tablica argument, np. $A$2:$C$100 lub $A:$C. Można szybko przełączać się między różnymi typami referencji, naciskając klawisz F4.
VLOOKUP zwraca pierwszą znalezioną wartość
Jak już wiesz, Excel VLOOKUP zwraca pierwszą znalezioną wartość. Możesz jednak zmusić go do przyniesienia 2, 3, 4 lub dowolnego innego wystąpienia, które chcesz. Istnieje również sposób, aby uzyskać ostatnie dopasowanie lub wszystkie znalezione dopasowania.
Rozwiązania : Przykłady wzorów dostępne są tutaj:
- VLOOKUP i zwrócenie N-tego wystąpienia
- VLOOKUP wiele wartości
- Formuła XLOOKUP, aby uzyskać ostatni mecz
Dlaczego mój VLOOKUP działa dla niektórych komórek, ale nie dla innych?
Kiedy Twoja formuła VLOOKUP zwraca poprawne dane I niektórych komórek i błędy #N/A w innych, może być kilka możliwych powodów, dlaczego tak się dzieje.
1. tablica nie jest zablokowana
Załóżmy, że masz tę formułę w wierszu 2 (powiedzmy w E2), która działa ładnie:
=VLOOKUP(D2, A2:B10, 2, FALSE)
Po skopiowaniu do wiersza 3 formuła zmienia się na:
=VLOOKUP(D3, A3:B11, 2, FALSE)
Ponieważ odniesienie względne jest używane dla tablica , zmienia się na podstawie względnej pozycji wiersza, w którym formuła jest kopiowana, w naszym przypadku z A2:B10 do A3:B11. Tak więc, jeśli dopasowanie znajduje się w wierszu 2, nie zostanie znalezione!
Rozwiązanie : W przypadku używania formuły VLOOKUP dla więcej niż jednej komórki, zawsze zablokować tablicę odniesienie ze znakiem $ jak $A$2:$B$10.
2) Wartości tekstowe lub typy danych nie są zgodne
Innym częstym powodem niepowodzenia VLOOKUP jest różnica między wartością lookup a podobną wartością w kolumnie lookup. W niektórych przypadkach różnica jest tak subtelna, że trudno ją zauważyć wizualnie.
Rozwiązanie : Kiedy VLOOKUP zwraca błąd #N/A, podczas gdy wyraźnie widać wartość w kolumnie lookup i najwyraźniej obie są pisane dokładnie tak samo, pierwszą rzeczą, którą musisz zrobić, jest określenie pierwotnej przyczyny problemu - formuły lub danych źródłowych.
Aby przekonać się, czy obie wartości są takie same czy różne, dokonaj bezpośredniego porównania w ten sposób:
=E1=A4
Gdzie E1 to twoja wartość lookup, a A4 to identyczna wartość w kolumnie lookup.
Jeśli formuła zwraca FALSE, oznacza to, że wartości różnią się w jakiś sposób, choć wyglądają zupełnie tak samo.
W przypadku wartości numeryczne , najbardziej możliwą przyczyną są liczby sformatowane jako tekst.
W przypadku wartości tekstowe , najprawdopodobniej problem tkwi w nadmiarze spacji. Aby to sprawdzić, znajdź całkowitą długość dwóch ciągów za pomocą funkcji LEN:
=LEN(E1)
=LEN(A4)
Jeśli otrzymane liczby są różne (jak na poniższym zrzucie ekranu), to znaczy, że znalazłeś winowajcę - dodatkowe spacje:
Aby rozwiązać ten problem, usuń dodatkowe spacje lub użyj tej formuły INDEX MATCH TRIM jako obejścia.
Dlaczego mój VLOOKUP wyciąga złe dane?
Może być jeszcze więcej powodów, dla których twój VLOOKUP zwraca złą wartość:
- Nieprawidłowy tryb wyszukiwania Jeśli chcesz uzyskać dokładne dopasowanie, pamiętaj, aby ustawić range_lookup Domyślnie jest to TRUE, więc jeśli pominiesz ten argument, VLOOKUP założy, że szukasz przybliżonego dopasowania i będzie szukał najbliższej wartości, która jest mniejsza niż wartość lookup.
- Kolumna lookup nie jest posortowana . dla przybliżonego dopasowania VLOOKUP ( range_lookup ustawione na TRUE), aby działało poprawnie, pierwsza kolumna w tablicy musi być posortowana w porządku rosnącym, od najmniejszej do największej.
- Duplikaty w kolumnie lookup Jeśli kolumna lookup zawiera dwie lub więcej zduplikowanych wartości, VLOOKUP zwróci pierwsze znalezione dopasowanie, które może nie być tym, którego oczekujesz.
- Nieprawidłowa kolumna zwrotna . dwukrotnie sprawdź numer indeksu w 3 argumencie :)
VLOOKUP nie działa między dwoma arkuszami
Po pierwsze, należy zauważyć, że powszechne przyczyny błędów #N/A, #VALUE i #REF omówione powyżej mogą powodować te same problemy podczas przeglądania z innego arkusza. Jeśli tak nie jest, sprawdź następujące punkty:
- Upewnij się, że zewnętrzne odwołanie do innego arkusza lub innego skoroszytu jest poprawne.
- Podczas wykonywania Vlookup z innego skoroszytu, który jest zamknięta w tej chwili sprawdź, czy twoja formuła zawiera pełną ścieżkę do zamkniętego skoroszytu.
- Jeśli VLOOKUP nie można wybrać tablicy w innym arkuszu (tzn. po podświetleniu zakresu w arkuszu wyszukiwania nic nie pojawia się w tablica argument w formule lub w odpowiednim polu kreatora formuły), to najprawdopodobniej oba arkusze są otwarte w oddzielnych instancjach Excela i nie mogą się ze sobą komunikować. Więcej informacji znajdziesz w rozdziale Jak określić, które pliki Excela znajdują się w której instancji. Aby to naprawić, wystarczy zamknąć wszystkie okna Excela, a następnie ponownie otworzyć arkusze/zeszyty robocze w tej samej instancji (zachowanie domyślne).
Jak Vlookup bez błędów w programie Excel
Jeśli nie chcesz onieśmielać swoich użytkowników standardowymi notacjami błędów Excela, możesz zamiast tego wyświetlić własny tekst przyjazny dla użytkownika lub zwrócić pustą komórkę, jeśli nic nie zostanie znalezione. Można to zrobić za pomocą VLOOKUP z funkcją IFERROR lub IFNA.
Wyłapywanie wszystkich błędów
W programie Excel 2007 i nowszych można użyć funkcji IFERROR do sprawdzenia formuły VLOOKUP pod kątem błędów i zwrócenia własnego tekstu (lub pustego ciągu), jeśli każdy błąd jest wykrywany.
Na przykład:
=IFERROR(VLOOKUP(E1, A2:B10, 2, FALSE), "Oops, something went wrong")
W programie Excel 2003 i wcześniejszych, w tym samym celu można użyć formuły JEŻELI ISERROR:
=IF(ISERROR(VLOOKUP(E1, A2:B10, 2, FALSE)), "Oops, something went wrong", VLOOKUP(E1, A2:B10, 2, FALSE))
Więcej szczegółów znajdziesz w rozdziale Używanie IFERROR z VLOOKUP w Excelu.
Obsługa błędów #N/A
Aby wychwycić tylko błędy #N/A, ignorując wszystkie inne typy błędów, użyj funkcji IFNA (w programie Excel 2013 i nowszych) lub formuły IF ISNA (we wszystkich wersjach).
Na przykład:
=IFNA(VLOOKUP(E1, A2:B10, 2, FALSE), "Ups, nie znaleziono dopasowania, proszę spróbować ponownie!")
=IF(ISNA(VLOOKUP(E1, A2:B10, 2, FALSE)), "Oops, no match is found. Please try again!", VLOOKUP(E1, A2:B10, 2, FALSE))
To wszystko na dziś, mam nadzieję, że ten tutorial pomoże Ci pozbyć się błędów VLOOKUP i sprawi, że Twoje formuły będą działały tak, jak chcesz.