course
VLOOKUP() är en funktion i Google Kalkylark som söker efter ett värde i en kolumn och returnerar ett matchande värde från en annan kolumn på samma rad. Du anger vad som ska hittas, var det ska letas, och får tillbaka den data du behöver.
Funktionen är särskilt användbar när du arbetar med stora datamängder där det skulle ta för lång tid att hitta och matcha data manuellt. Men varje gång du behöver koppla ihop två tabeller med hjälp av ett gemensamt värde är VLOOKUP() din förstahandsfunktion.
I den här guiden lär du dig dess syntax, hur du använder den steg för steg, vad som orsakar felaktiga resultat och när du bör välja alternativ som INDEX MATCH() eller XLOOKUP().
Vad är syntaxen för VLOOKUP() i Google Kalkylark?
Syntaxen för VLOOKUP() är:
=VLOOKUP(search_key, range, index, [is_sorted])
Här:
-
search_keyär värdet du vill hitta -
rangeär tabellen där sökningen sker -
indexär kolumnnumret som resultatet ska hämtas från -
[is_sorted]anger om du vill ha en exakt träff eller inte
Hur gör du en VLOOKUP() i Google Kalkylark?
För att göra en VLOOKUP() i Google Kalkylark:
-
Bestäm vilket värde du vill slå upp: Det kan vara ett ID, ett namn eller något annat unikt värde.
-
Identifiera ditt tabellområde: Se till att kolumnen som innehåller ditt sökvärde är den första kolumnen i området.
-
Välj vilken data du vill få tillbaka: Detta är kolumnen med resultatet (t.ex. namn, pris, status).
-
Ange formeln
VLOOKUP()i en ny cell: Referera till ditt sökvärde, tabellområdet och kolumnen du vill returnera. -
Använd exakt eller ungefärlig träff (
FALSEellerTRUE): I de flesta fall vill du ha en exakt träff för att undvika felaktiga resultat (mer om detta senare).
Om du har den här tabellen:
|
A (ID) |
B (Namn) |
|
101 |
George |
|
102 |
Sarah |
|
103 |
Lily |
Och du vill hitta namnet för ID 102, använd:
=VLOOKUP(102, A2:B4, 2, FALSE)
Detta säger åt Google Kalkylark att:
- Letar efter 102 i kolumn A
- Returnerar värdet från kolumn B
- Ger en exakt träff
Som resultat får du Sarah.

Exempel på VLOOKUP(). Bild: författaren.
Hur VLOOKUP() fungerar (steg-för-steg-logik)
VLOOKUP() följer en enkel vertikal sökprocess. Den börjar alltid i den första kolumnen i ditt valda område och skannar sedan nedåt, en rad i taget, tills den hittar den första träffen.
När den hittar träffen stannar den på samma rad. Sedan förflyttar den sig till den kolumn du angivit och returnerar det värdet.
Så här fungerar det steg för steg:
- Börjar i områdets första kolumn
- Söker nedåt i kolumnen
- Hittar den första matchande träffen
- Går åt sidan på samma rad
- Returnerar data från den angivna kolumnen
Säg att du vill hitta befattningen för anställnings-ID E1007. Använd då följande formel:
=VLOOKUP("E1007", A:G, 5, FALSE)

VLOOKUP() i Google Kalkylark. Bild: författaren.
Den här formeln:
-
Hittar
E1007i kolumn A -
Går åt sidan på samma rad
-
Returnerar kolumn 5 (Befattning)
-
Ger resultatet Software Engineer.
Obs: VLOOKUP() kan bara söka från vänster till höger. Om din uppslagskolumn inte är den första kolumnen i området fungerar inte funktionen. I så fall måste du ordna om din data eller använda en annan funktion. Vi återkommer till det senare.
Exakt träff vs ungefärlig träff i VLOOKUP()
Exakt träff returnerar ett resultat bara när värdet är identiskt. Ungefärlig träff returnerar det närmaste tillgängliga värdet när en exakt träff inte finns, vanligtvis baserat på sorterad data.
I VLOOKUP() styrs detta av det sista argumentet. Det sista argumentet, FALSE eller TRUE, är det som flest sätter fel eftersom TRUE ser harmlöst ut men inte är det.
- FALSE betyder endast exakt träff. Om värdet inte finns får du #N/A, vilket faktiskt är hjälpsamt.
- TRUE returnerar det närmaste lägre värdet när ingen exakt träff finns, vilket låter som en reservlösning men mer korrekt beskrivs som ett tyst felaktigt svar. Det förutsätter också att din data är sorterad. Om den inte är det blir resultatet oförutsägbart.
Jag skulle säga: använd TRUE bara för trappade uppslag, som skattetabeller eller betygsintervall, där ungefärligt är rätt beteende per design. För allt annat, använd FALSE.
Exakt träff (FALSE)
Detta säger till VLOOKUP(): ”Returnera bara ett resultat om du hittar exakt det här värdet.” Till exempel letar formeln =VLOOKUP("E1005", A:G, 7, FALSE) efter E1005, returnerar lönen från kolumn 7 och ger resultatet 90000.
Om värdet inte finns får du felet #N/A.

Exakt träff i VLOOKUP(). Bild: författaren.
Ungefärlig träff (TRUE)
Detta säger till VLOOKUP(): ”Om du inte hittar en exakt träff, returnera närmaste värde under.” Det kan låta hjälpsamt — ibland är det det, men ibland ger det tyst fel svar.
Till exempel finns inte E1011 i vår data. Sista anställnings-ID är E1010. Så om du använder formeln =VLOOKUP("E1011", A:G, 7, TRUE) kommer VLOOKUP() inte att returnera ett fel. I stället returnerar den värdet för den närmaste lägre träffen, vilket är E1010. Cellen visar 88000.
Så även om E1011 saknas får du ändå ett resultat eftersom TRUE tillåter en ungefärlig träff.

Ungefärlig träff i VLOOKUP(). Bild: författaren.
Föreställ dig nu att samma data är i oordning, och jag matar in det tillgängliga anställnings-ID:t i formeln, så här: =VLOOKUP("E1011", A:G, 7, TRUE).
Den här gången returnerar formeln en felaktig lön eftersom uppslagskolumnen inte är sorterad och ungefärlig träff bygger på sorterad data.

VLOOKUP() ungefärlig träff ger fel p.g.a. osorterad lista. Bild: författaren.
Vanliga fel i VLOOKUP() och hur du åtgärdar dem
Låt oss titta på några av de vanligaste problemen du kan stöta på med VLOOKUP() och hur du löser dem:
#N/A-fel
Ett #N/A-fel betyder att VLOOKUP() inte kunde hitta värdet du bad om.
Anta att du har denna formel: =VLOOKUP("E9999", A:G, 7, FALSE)
Om E9999 inte finns i den första kolumnen i området returnerar formeln #N/A.
Detta kan också hända om värdet är skrivet annorlunda i arket, till exempel med extra blanksteg eller formateringsproblem i text.
För att åtgärda det:
-
Se till att värdet finns i områdets första kolumn
-
Använd rätt cellreferens i stället för att skriva värdet manuellt när det är möjligt
-
Lägg till citattecken om du hårdkodar ett textvärde
-
Ta bort inledande eller avslutande blanksteg från datan
-
Använd
FALSEendast när du behöver en exakt träff
Fel kolumnindex
Kolumnindex talar om för VLOOKUP() vilken kolumn som ska returneras inom det valda området. Om indexnumret är för stort returnerar formeln #REF!.
Denna =VLOOKUP("E1005", A:G, 8, FALSE) returnerar #REF! eftersom området A:G bara har 7 kolumner.

Fel kolumnindex ger fel. Bild: författaren.
Du kan också få fel resultat om kolumnnumret är giltigt men pekar på fel kolumn.
Till exempel:
=VLOOKUP("E1005", A:G, 5, FALSE)
Detta returnerar befattningen, inte lönen.
För att åtgärda det:
- Räkna kolumner från den första kolumnen i ditt valda område
- Kontrollera att kolumnnumret motsvarar det värde du vill returnera
- Säkerställ att kolumnen finns inom området
Problem med ungefärlig träff
Om du använder TRUE letar VLOOKUP() efter den närmaste lägre träffen i stället för att kräva en exakt.
Om du skriver =VLOOKUP("E1011", A:G, 7, TRUE) och det inte finns något E1011 i datasetet returnerar formeln i stället för ett fel 88000, vilket tillhör E1010.
Det resultatet kan se korrekt ut, men det är ingen exakt träff.
För att åtgärda det:
-
Använd
FALSEnär du behöver ett exakt resultat -
Använd
TRUEendast när datan är sorterad och ett ungefärligt resultat är acceptabelt
Problem med område
VLOOKUP() kan också sluta fungera när det valda området inte stämmer med vad formeln försöker göra.
Till exempel returnerar =VLOOKUP("E1005", A:C, 7, FALSE) #REF! eftersom området A:C bara har 3 kolumner, men formeln frågar efter kolumn 7.
Ett annat vanligt problem uppstår när uppslagskolumnen inte är den första kolumnen i området.
Se denna formel:
=VLOOKUP("E1005", B:G, 7, FALSE)
Här är den första kolumnen i området kolumn B, inte kolumn A. Eftersom VLOOKUP() bara söker i den första kolumnen i det valda området kan den inte hitta E1005.
För att åtgärda det:
- Säkerställ att uppslagskolumnen är den första kolumnen i området
- Säkerställ att området inkluderar kolumnen du vill returnera
- Dubbelkolla det valda området innan du färdigställer formeln

Fel område ger fel. Bild: författaren.
VLOOKUP() mellan blad i Google Kalkylark
Du kan använda VLOOKUP() för att hämta data från ett annat blad genom att lägga till bladnamnet före området.
Formatet ser ut så här:
=VLOOKUP(search_key, SheetName!range, index, FALSE)
Delen SheetName! talar om för formeln vilket blad som ska genomsökas.
Anta att din data finns i ett blad som heter Employees, och du arbetar i ett annat blad. För att hitta avdelningen för anställnings-ID E1005, använd:
=VLOOKUP("E1005", Employees!A:G, 4, FALSE)
Här:
-
Employees!A:Gsöker i bladet Employees -
4returnerar kolumnen Department
Formeln returnerar avdelningen för E1005.

Referera till ett annat blad i VLOOKUP(). Bild: författaren.
När bladnamn innehåller mellanslag
Om bladnamnet innehåller mellanslag, omge det med enkla citattecken så här:
=VLOOKUP("E1005", 'Employee Data'!A:G, 7, FALSE)
Utan citattecknen fungerar inte formeln.
VLOOKUP() vs. INDEX MATCH i Google Kalkylark
VLOOKUP() söker i en fast kolumn och returnerar data baserat på position, medan INDEX MATCH hittar värden direkt med rad- och kolumnreferenser, så den fungerar även om tabellstrukturen ändras.
VLOOKUP: snabb att skriva, lätt att ha sönder
Du har redan sett att =VLOOKUP("E1005", A:G, 7, FALSE) hittar lönen för E1005.
Det fungerar bra när:
- Uppslagskolumnen är till vänster
- Tabellstrukturen inte förändras
Problemen börjar när strukturen ändras.
Till exempel:
- Du infogar en ny kolumn
- Lönekolumnen flyttas från 7 till 8
- Formeln använder fortfarande 7
Nu returnerar den fel värde utan att visa ett fel.
INDEX MATCH: längre, men stabil
Så här ser samma uppslag ut med INDEX MATCH:
=INDEX(G:G, MATCH("E1005", A:A, 0))
Här:
-
MATCH()hittar positionen förE1005i kolumn A -
INDEX()returnerar värdet från kolumn G på den positionen
Denna metod är inte beroende av kolumnnummer, så den fortsätter fungera även om tabellen ändras.

INDEX MATCH hanterar datan bättre än VLOOKUP(). Bild: författaren.
När det faktiskt hjälper
Använd INDEX MATCH när din data inte är ordnad vänster till höger. Anta att kolumn A innehåller anställnings-ID och kolumn C innehåller efternamn. Om du vill söka på efternamn och returnera anställnings-ID är detta ett uppslag från höger till vänster.
VLOOKUP() kan inte göra detta utan att ändra tabellen, men INDEX MATCH hanterar det direkt:
=INDEX(A:A, MATCH("Wilson", C:C, 0))
Ingen omstrukturering av din data behövs.
VLOOKUP() vs XLOOKUP i Google Kalkylark
VLOOKUP() söker inom en fast struktur och har begränsningar, medan XLOOKUP() tillåter uppslag i valfri riktning. Den lades till i Google Kalkylark 2022 och är nu det bättre alternativet i många fall.
Säg att du vill hitta anställnings-ID utifrån efternamnet Wilson. Detta är ett uppslag från höger till vänster. VLOOKUP() kan inte hantera detta utan att ordna om tabellen, men XLOOKUP() kan:
=XLOOKUP("Wilson", C:C, A:A)
Den här formeln:
- Söker i efternamn (kolumn C)
- Returnerar anställnings-ID (kolumn A)

XLOOKUP() i Google Kalkylark. Bild: författaren.
XLOOKUP() är bättre eftersom det:
- Fungerar i valfri riktning (vänster eller höger)
- Inte använder kolumnnummer
- Returnerar exakta träffar som standard
- Tillåter anpassad utdata när ingen träff hittas
Avslutande tankar
Om jag bara fick ge ett råd: bygg in VLOOKUP() i ett riktigt kalkylark du faktiskt bryr dig om i stället för i ett övningsark. Felen känns annorlunda när datan är viktig. Du kommer att minnas varför FALSE finns första gången TRUE tyst ger dig någons felaktiga lön.
När du blivit varm i kläderna, testa olika matchningstyper, justera dina områden och notera när resultaten slutar vara rimliga. Det är oftast då ett mer flexibelt alternativ som INDEX MATCH() eller XLOOKUP() är vettigare.
FAQs
Kan jag använda `VLOOKUP()` med jokertecken?
Ja. Du kan använda * (valfritt antal tecken) och ? (enskilt tecken) i söknyckeln när du använder exakt träff.
Till exempel, =VLOOKUP("E10*", A:G, 2, FALSE)
Kan `VLOOKUP()` hantera skiftlägeskänsliga sökningar i Google Kalkylark?
Nej. VLOOKUP() är inte skiftlägeskänslig. Den behandlar ”apple” och ”Apple” som samma värde. För att göra skiftlägeskänsliga uppslag behöver du använda funktioner som FILTER() eller EXACT().
Varför returnerar `VLOOKUP()` ibland tomma resultat?
Detta händer när den matchade cellen är tom eftersom det indikerar att formeln fungerade korrekt, men att det inte finns någon data att visa.
Kan `VLOOKUP()` referera till namngivna områden?
Ja. I stället för att använda A:G kan du namnge ditt område (t.ex. EmployeeData) och använda det i formeln.
Så här kan du göra:
=VLOOKUP("E1005", EmployeeData, 7, FALSE)