Innehållsförteckning
Får din VLOOKUP fram fel data eller kan du inte få den att fungera alls? Den här handledningen visar hur du snabbt kan åtgärda vanliga VLOOKUP-fel och övervinna dess huvudsakliga begränsningar.
I några tidigare artiklar har vi undersökt olika aspekter av Excel-funktionen VLOOKUP. Om du har följt oss noga bör du nu vara expert på området :)
Det är dock inte utan anledning som många Excel-specialister anser att VLOOKUP är en av de mest komplicerade Excel-funktionerna. Den har en mängd begränsningar som är källan till olika problem och fel.
I den här artikeln hittar du enkla förklaringar av de viktigaste orsakerna till VLOOKUP-fel som #N/A, #NAME och #VALUE, samt deras lösningar och korrigeringar. Vi börjar med de mest uppenbara orsakerna till att VLOOKUP inte fungerar, så det kan vara en bra idé att kolla in nedanstående felsökningssteg i tur och ordning.
Fastställande av #N/A-fel i VLOOKUP
I VLOOKUP-formler visas felmeddelandet #N/A (som betyder "inte tillgänglig") när Excel inte kan hitta ett uppslagsvärde. Det kan finnas flera orsaker till varför det kan hända.
1. Uppslagsvärdet är felstavat.
Det är alltid en bra idé att kontrollera det mest uppenbara först : ) Felaktiga utskrifter förekommer ofta när du arbetar med riktigt stora datamängder som består av tusentals rader, eller när ett uppslagsvärde skrivs in direkt i formeln.
2. #N/A i ungefärlig matchning VLOOKUP
Om formeln letar upp den närmaste matchningen, ( range_lookup argumentet är satt till TRUE eller utelämnas), kan #N/A-felet uppstå i två fall:
- Uppslagsvärdet är mindre än det minsta värdet i uppslagsmatrisen.
- Uppslagskolumnen är inte sorterad i stigande ordning.
3. #N/A i exakt matchande VLOOKUP
Om du söker efter exakt matchning ( range_lookup till FALSE), uppstår felet #N/A när ett värde som är exakt lika med uppslagsvärdet inte hittas. För mer information, se VLOOKUP exakt matchning vs. ungefärlig matchning.
4. Uppslagskolonnen är inte den vänstra kolumnen i tabellmatrisen.
En av de största begränsningarna med Excel VLOOKUP är att den inte kan titta till vänster. Därför bör en uppslagskolumn alltid vara den längst till vänster i kolumnen I praktiken glömmer vi ofta detta och får då #N/A-fel.
Lösning : Om det inte är möjligt att omstrukturera data så att kolumnen för uppslagsordet är den kolumn som ligger längst till vänster, kan du använda funktionerna INDEX och MATCH tillsammans som ett alternativ till VLOOKUP. Här är ett exempel på en formel: INDEX MATCH-formel för att söka upp värden till vänster.
5. Siffror formateras som text.
En annan vanlig källa till #N/A-fel i VLOOKUP-formler är siffror som är formaterade som text, antingen i huvud- eller uppslagstabellen.
Detta inträffar vanligtvis när du importerar data från en extern databas eller om du har skrivit en apostrof före ett tal för att visa nollor.
Här är de tydligaste indikatorerna på siffror som är formaterade som text:
Lösning: Markera alla problematiska nummer, klicka på felikonen och välj Konvertera till nummer från kontextmenyn. För mer information, se Hur man konverterar text till siffror i Excel.
6. Ledande eller avslutande mellanslag
Detta är den minst uppenbara orsaken till felet VLOOKUP #N/A eftersom det mänskliga ögat knappast kan se de extra mellanslag, särskilt när du arbetar med stora datamängder där de flesta posterna ligger under rullningsfältet.
Lösning 1: Extra mellanslag i uppslagsvärdet
För att säkerställa att din VLOOKUP-formel fungerar korrekt ska du omsluta uppslagsvärdet med TRIM-funktionen:
=VLOOKUP(TRIM(E1), A2:C10, 2, FALSE)
Lösning 2: Extra mellanslag i kolumnen för uppslagsord
Om extra mellanslag förekommer i uppslagskolumnen finns det inget enkelt sätt att undvika #N/A-fel i VLOOKUP. I stället kan du använda en kombination av INDEX-, MATCH- och TRIM-funktionerna som en matrisformel:
=INDEX(B2:B10, MATCH(TRUE, TRIM(A$2:A$10)=TRIM(E1), 0))
Eftersom det här är en matrisformel, glöm inte att trycka på Ctrl + Shift + Enter för att slutföra formeln (i Excel 365 och Excel 2021, där matriser är inbyggda, fungerar det här också som en vanlig formel).
Tips: Ett snabbt alternativ är att köra verktyget Trim Spaces som på några sekunder tar bort överflödiga mellanslag både i lookup- och huvudtabellerna och gör dina VLOOKUP-formler felfria.
Felet #VALUE! i VLOOKUP-formlerna
I allmänhet visar Microsoft Excel felet #VALUE! om ett värde som används i formeln är av fel datatyp. När det gäller VLOOKUP finns det två vanliga källor till felet VALUE!
1. Uppslagsvärdet överstiger 255 tecken
Observera att VLOOKUP inte kan söka upp värden som innehåller mer än 255 tecken. Om dina sökvärden överskrider denna gräns visas felmeddelandet #VALUE!
Lösning : Använd istället en INDEX MATCH-formel. I vårt fall fungerar den här formeln perfekt:
=INDEX(B2:B7, MATCH(TRUE, INDEX(A2:A7= E1, 0), 0)))
2. Fullständig sökväg till uppslagsarbetsboken anges inte.
Om du hämtar data från en annan arbetsbok måste du ange den fullständiga sökvägen till den. Mer exakt måste du omsluta arbetsbokens namn, inklusive tillägget, med [hakparenteser] och ange arkets namn följt av ett utropstecken. Om arbetsbokens namn eller arkets namn, eller båda, innehåller mellanslag eller andra tecken än bokstavsbeteckningar måste sökvägen omslutas av enkla citattecken.
Här är strukturen för tabell_array argument till Vlookup från en annan arbetsbok:
'[arbetsboksnamn]arknamn'!intervall
En riktig formel kan se ut på följande sätt:
=VLOOKUP($A$2,'[New Prices.xls]Sheet1'!$B:$D, 3, FALSE)
Ovanstående formel söker efter värdet A2 i kolumn B i blad 1 i Nya priser arbetsbok och återge ett matchande värde från kolumn D.
Om något element i sökvägen saknas fungerar inte din VLOOKUP-formel och returnerar felet #VALUE (om inte arbetsboken för uppslaget är öppen).
För mer information, se:
- Hur du hänvisar till ett annat ark eller en annan arbetsbok i Excel
- Hur man gör Vlookup från en annan arbetsbok
3. Argumentet col_index_num är mindre än 1.
Det är svårt att föreställa sig en situation där någon avsiktligt anger ett tal som är mindre än 1 för att specificera kolumnen som värdena ska returneras från. Men det kan hända om det här argumentet returneras av någon annan funktion som är inbäddad i din VLOOKUP-formel.
Så om den col_index_num är större än 1, kommer din formel också att returnera felet #VALUE!.
Om col_index_num är större än antalet kolumner i tabellmatrisen, ger VLOOKUP felet #REF!.
Lösa felet VLOOKUP #NAME
Detta är det enklaste fallet - felet #NAME? visas om du råkar stava fel på funktionens namn.
Lösningen är uppenbar - kontrollera stavningen :)
Huvudorsakerna till fel i Excel VLOOKUP
Förutom att VLOOKUP har en ganska komplicerad syntax har den fler begränsningar än någon annan Excel-funktion. På grund av dessa begränsningar kan en till synes korrekt formel ofta ge andra resultat än vad du förväntade dig. Nedan hittar du lösningar på några typiska scenarier när VLOOKUP misslyckas.
VLOOKUP är skiftlägeskänslig
VLOOKUP-funktionen skiljer inte mellan bokstavsbokstäver och betraktar små och stora bokstäver som identiska.
Lösning : Använd VLOOKUP, XLOOKUP eller INDEX MATCH i kombination med EXACT-funktionen som kan matcha textkortsatsning. Du hittar detaljerade förklaringar och formelexempel i den här handledningen: 5 sätt att göra en skiftlägeskänslig Vlookup i Excel.
En ny kolumn har lagts till eller tagits bort från tabellen.
Tyvärr slutar VLOOKUP-formlerna att fungera varje gång en ny kolumn tas bort från eller läggs till i uppslagstabellen. Detta beror på att syntaxen för VLOOKUP-funktionen kräver att indexnumret för returkolumnen definieras. När en ny kolumn läggs till eller tas bort från tabellmatrisen ändras indexnumret naturligtvis.
Lösning : Formeln INDEX MATCH kommer till undsättning igen : ) Med INDEX MATCH anger du uppslags- och returområdena separat, så du kan ta bort eller lägga in så många kolumner som du vill utan att behöva oroa dig för att uppdatera varje tillhörande formel.
Cellreferenser ändras när formeln kopieras till andra celler
Rubriken ger en uttömmande förklaring av problemet, eller hur?
Lösning : Använd alltid absoluta referenser (med $-tecknet) för tabell_array argument, t.ex. $A$2:$C$100 eller $A:$C. Du kan snabbt växla mellan olika referenstyper genom att trycka på F4-tangenten.
VLOOKUP returnerar det första funna värdet
Som du redan vet returnerar Excel VLOOKUP det första värdet som hittas. Du kan dock tvinga den att ta med det andra, tredje, fjärde eller vilket annat värde som helst. Det finns också ett sätt att få fram den sista matchningen eller alla hittade matchningar.
Lösningar : Exempel på formler finns här:
- VLOOKUP och återge den N:e förekomsten
- VLOOKUP flera värden
- XLOOKUP-formeln för att få fram den sista matchningen
Varför fungerar min VLOOKUP för vissa celler men inte för andra?
När din VLOOKUP-formel returnerar korrekta data i vissa celler och #N/A-fel i andra kan det finnas flera möjliga orsaker till detta.
1. Tabellmatrisen är inte låst
Anta att du har denna formel i rad 2 (till exempel i E2), vilket fungerar bra:
=VLOOKUP(D2, A2:B10, 2, FALSE)
När formeln kopieras till rad 3 ändras den till:
=VLOOKUP(D3, A3:B11, 2, FALSE)
Eftersom en relativ referens används för tabell_array ändras den baserat på den relativa positionen för raden där formeln kopieras, i vårt fall från A2:B10 till A3:B11. Så om matchningen finns i rad 2 kommer den inte att hittas!
Lösning : När du använder en VLOOKUP-formel för mer än en cell ska du alltid låsa tabellmatrisen referens med $-tecknet som $A$2:$B$10.
2. Textvärden eller datatyper stämmer inte överens.
En annan vanlig orsak till att VLOOKUP misslyckas är skillnaden mellan ditt uppslagsvärde och ett liknande värde i uppslagskolumnen. I vissa fall är skillnaden så subtil att den är svår att upptäcka visuellt.
Lösning : När VLOOKUP returnerar ett #N/A-fel medan du tydligt kan se uppslagsvärdet i uppslagskolumnen, och uppenbarligen stavas båda exakt likadant, är det första du måste göra att fastställa grundorsaken till problemet - formeln eller källdata.
För att se om de två värdena är lika eller olika kan du göra en direkt jämförelse på detta sätt:
=E1=A4
Där E1 är ditt uppslagsvärde och A4 är ett identiskt värde i uppslagskolumnen.
Om formeln ger FALSE betyder det att värdena skiljer sig åt på något sätt, även om de ser helt likadana ut.
Om det finns numeriska värden Den mest tänkbara orsaken är siffror som är formaterade som text.
Om det finns textvärden För att kontrollera detta kan du ta reda på den totala längden på de två strängarna med hjälp av LEN-funktionen:
=LEN(E1)
=LEN(A4)
Om siffrorna skiljer sig åt (som i skärmbilden nedan) har du hittat den skyldige - extra mellanslag:
För att lösa problemet kan du antingen ta bort extra mellanslag eller använda den här INDEX MATCH TRIM-formeln som en lösning.
Varför hämtar min VLOOKUP fel data?
Det kan finnas fler orsaker till att din VLOOKUP ger fel värde:
- Felaktigt sökläge . Om du vill ha en exakt matchning, se till att ställa in range_lookup Standardvärdet är TRUE, så om du utelämnar det här argumentet antar VLOOKUP att du letar efter en ungefärlig matchning och söker efter det närmaste värdet som är mindre än uppslagsvärdet.
- Kolumnen är inte sorterad För ungefärlig matchning VLOOKUP ( range_lookup till TRUE) för att fungera korrekt måste den första kolumnen i tabellmatrisen vara sorterad i stigande ordning, från den minsta till den största.
- Duplikat i kolumnen för uppslag Om uppslagskolumnen innehåller två eller flera dubblettvärden återger VLOOKUP den första matchningen som hittats, vilket kanske inte är den du förväntar dig.
- Felaktig returkolumn . Dubbelkontrollera indexnumret i det tredje argumentet :)
VLOOKUP fungerar inte mellan två ark
Först och främst bör det noteras att de vanligaste orsakerna till #N/A-, #VALUE- och #REF-fel som diskuterats ovan kan orsaka samma problem när du tittar upp från ett annat blad. Om så inte är fallet kan du kontrollera följande punkter:
- Kontrollera att den externa referensen till ett annat ark eller en annan arbetsbok är korrekt.
- När du gör en Vlookup från en annan arbetsbok som är stängd för tillfället, kontrollera att formeln innehåller hela sökvägen till den stängda arbetsboken.
- Om VLOOKUP kan inte välja en tabellmatris i ett annat arbetsblad (dvs. när du markerar ett intervall i uppslagsbladet visas ingenting i tabell_array argumentet i formeln eller i motsvarande ruta i formelguiden) är det troligt att de två arken är öppna i olika Excel-instanser och inte kan kommunicera med varandra. Mer information finns i Hur man bestämmer vilka Excel-filer som finns i vilken instans. För att åtgärda detta stänger du helt enkelt alla Excel-fönster och öppnar sedan arken/arbetsböckerna på nytt i samma instans (standardbeteendet).
Hur man Vlookup utan fel i Excel
Om du inte vill skrämma dina användare med standardfelbeteckningar i Excel kan du istället visa en egen användarvänlig text eller returnera en tom cell om inget hittas. Detta kan göras genom att använda VLOOKUP med IFERROR- eller IFNA-funktionen.
Fånga upp alla fel
I Excel 2007 och senare kan du använda funktionen IFERROR för att kontrollera om en VLOOKUP-formel är felaktig och returnera din egen text (eller en tom sträng) om eventuella fel upptäcks.
Till exempel:
=IFERROR(VLOOKUP(E1, A2:B10, 2, FALSE), "Oops, något gick fel")
I Excel 2003 och tidigare kan du använda formeln IF ISERROR för samma ändamål:
=IF(ISERROR(VLOOKUP(E1, A2:B10, 2, FALSE)), "Oops, något gick fel", VLOOKUP(E1, A2:B10, 2, FALSE))
Mer information finns i Användning av IFERROR med VLOOKUP i Excel.
Hantera #N/A-fel
Om du bara vill fånga upp #N/A-fel och ignorera alla andra feltyper använder du funktionen IFNA (i Excel 2013 och senare) eller formeln IF ISNA (i alla versioner).
Till exempel:
=IFNA(VLOOKUP(E1, A2:B10, 2, FALSE), "Oops, ingen matchning hittades. Försök igen!")
=IF(ISNA(VLOOKUP(E1, A2:B10, 2, FALSE)), "Oops, no match is found. Please try again!", VLOOKUP(E1, A2:B10, 2, FALSE))
Det var allt för idag. Förhoppningsvis kan den här handledningen hjälpa dig att bli av med VLOOKUP-fel och få dina formler att fungera som du vill.