Formler

XOPPSLAG i Excel – slik bruker du funksjonen

Kort svar

XOPPSLAG henter en verdi fra én kolonne basert på et treff i en annen. Formelen er =XOPPSLAG(søkeverdi; søkematrise; returmatrise; [hvis_ikke_funnet]). Du slipper kolonnenummer, funksjonen slår opp både til venstre og høyre, og den bruker eksakt treff automatisk. XOPPSLAG finnes i Microsoft 365 og Excel 2021 – i eldre versjoner bruker du INDEKS og SAMMENLIGNE.

XOPPSLAG er funksjonen du bruker når du har en verdi – et kundenummer, en artikkelkode, et navn – og trenger noe annet som hører til den verdien. Den erstatter både FINN.RAD, FINN.KOLONNE og kombinasjonen INDEKS/SAMMENLIGNE, og gjør det med færre feilkilder enn alle tre.

Slik er formelen bygget opp

=XOPPSLAG(søkeverdi; søkematrise; returmatrise; [hvis_ikke_funnet]; [samsvarsmodus]; [søkemodus])

De tre første argumentene er de eneste du må fylle ut. De tre siste står i klammer fordi de er valgfrie:

Argument Hva det gjør Standard
søkeverdi Verdien du leter etter
søkematrise Kolonnen (eller raden) der verdien finnes
returmatrise Kolonnen du vil hente svaret fra
hvis_ikke_funnet Hva som vises når det ikke er treff #I/T
samsvarsmodus 0 eksakt, -1 nærmeste under, 1 nærmeste over, 2 jokertegn 0
søkemodus 1 ovenfra, -1 nedenfra, 2 og -2 binærsøk 1

Argumentet hvis_ikke_funnet er valgfritt, men bør nesten alltid brukes. Det er der du bestemmer hva som skal stå i cellen når det ikke finnes noe treff – i stedet for at Excel viser #I/T.

Semikolon eller komma? Norsk Excel skiller argumenter med semikolon. Kopierer du en formel fra en engelsk nettside, må du som regel bytte alle komma med semikolon for at den skal virke.

Et praktisk eksempel

Du har en prisliste i arket Priser:

A B C
1 Artikkelnummer Beskrivelse Pris
2 10241 Skrue M6 12,50
3 10242 Mutter M6 4,90
4 10243 Skive M6 2,10

I salgsarket står artikkelnummeret i A2, og du vil hente prisen:

=XOPPSLAG(A2; Priser!$A$2:$A$500; Priser!$C$2:$C$500; "Ukjent artikkel")

Formelen leter etter verdien i A2 nedover i prislistens kolonne A, og henter prisen fra samme rad i kolonne C. Finnes ikke artikkelen, står det «Ukjent artikkel» i stedet for en feilmelding – som er langt lettere å oppdage når du skanner en lang liste.

Legg merke til dollartegnene i $A$2:$A$500. De låser området slik at det ikke forskyver seg når du kopierer formelen nedover. Dette er den vanligste årsaken til at et oppslag plutselig gir feil verdier lenger ned i arket. Se låse celle i Excel for når du trenger hvilken type låsing.

Bruk tabell i stedet for faste områder

Alternativet – og det vi anbefaler – er å gjøre prislisten om til en Excel-tabell (Ctrl + L), gi den navnet Prisliste, og skrive:

=XOPPSLAG(A2; Prisliste[Artikkelnummer]; Prisliste[Pris]; "Ukjent artikkel")

Nå utvider området seg av seg selv når prislisten vokser, du slipper dollartegn, og formelen forteller hva den gjør uten at noen må slå opp hvilken kolonne C var.

Hva XOPPSLAG gjør bedre enn FINN.RAD

FINN.RAD (VLOOKUP) fungerer fortsatt, men har tre svakheter XOPPSLAG ikke har:

FINN.RAD XOPPSLAG
Retning Kun til høyre for søkekolonnen Begge retninger
Kolonnevalg Telle kolonnenummer manuelt Peke på returkolonnen direkte
Standard treff Omtrentlig treff (SANN) Eksakt treff
Hvis ikke funnet Må pakkes i HVISFEIL Innebygd argument
Vannrett oppslag Krever FINN.KOLONNE Samme funksjon

Særlig kolonnenummeret er en felle: setter noen inn en ny kolonne midt i tabellen, peker 4 plutselig på feil kolonne, og formelen fortsetter å returnere et resultat som ser riktig ut. XOPPSLAG peker på selve kolonnen, og følger derfor med når arket endrer seg.

Slå opp bortover i stedet for nedover

XOPPSLAG bryr seg ikke om retning. Er søkematrisen en rad i stedet for en kolonne, søker funksjonen vannrett – uten at du trenger FINN.KOLONNE:

=XOPPSLAG("Mars"; $B$1:$M$1; $B$5:$M$5)

Her leter formelen etter «Mars» i overskriftsraden og henter tallet fra rad 5 i samme kolonne.

Hent flere kolonner på én gang

Er returmatrisen flere kolonner bred, returnerer XOPPSLAG hele raden:

=XOPPSLAG(A2; Priser!$A$2:$A$500; Priser!$B$2:$D$500; "Ikke funnet")

Resultatet fyller tre celler bortover fra der du skrev formelen. Dette kalles en dynamisk matrise, og krever at cellene til høyre er tomme – ellers får du #SPREDNING!.

Det er en av de mest undervurderte forbedringene i XOPPSLAG: der du før måtte ha tre FINN.RAD-formler med hvert sitt kolonnenummer, har du nå én formel.

Oppslag i to retninger samtidig

Skal du finne krysningspunktet mellom en rad og en kolonne – for eksempel omsetning for en gitt avdeling i en gitt måned – nøster du to XOPPSLAG i hverandre:

=XOPPSLAG(F2; $A$2:$A$50; XOPPSLAG(G2; $B$1:$M$1; $B$2:$M$50))

Den innerste formelen finner riktig kolonne, den ytterste finner riktig rad i den kolonnen. Det er den moderne erstatningen for INDEKS(...; SAMMENLIGNE(...); SAMMENLIGNE(...)), og den er lettere å lese.

Nærmeste treff i stedet for eksakt

Standard er eksakt treff. Skal du finne hvilket intervall en verdi havner i – provisjonstrinn, portosatser, rabattgrenser – setter du samsvarsmodus til -1 (nærmeste verdi som er mindre enn eller lik):

Fra beløp Provisjon
0 0 %
25 000 2 %
50 000 4 %
100 000 6 %

=XOPPSLAG(B2; $E$2:$E$5; $F$2:$F$5; 0; -1)

Tabellen må være sortert stigende for at dette skal gi mening. 1 gjør det motsatte: nærmeste verdi som er større enn eller lik.

Dette er den ene måten XOPPSLAG kan gi feil svar uten å si fra. Med samsvarsmodus -1 eller 1 finner formelen alltid noe. Bruker du den ved et uhell på artikkelnumre, får du prisen til en helt annen artikkel – uten feilmelding. Bruk alltid eksakt treff når du slår opp på en nøkkel.

Jokertegn

* og ? virker ikke automatisk. Vil du slå opp på delvis tekst, setter du samsvarsmodus til 2:

=XOPPSLAG("*" & F2 & "*"; $A$2:$A$500; $B$2:$B$500; "Ikke funnet"; 2)

* betyr «null eller flere tegn», ? betyr «ett tegn». Skal du lete etter en faktisk stjerne i teksten, skriver du ~*.

Første eller siste treff

Har du duplikater, returnerer XOPPSLAG første treff ovenfra. Det er sjelden det du vil når listen er en logg sortert etter dato. Sjette argument styrer retningen:

=XOPPSLAG(A2; $A$2:$A$500; $C$2:$C$500; ""; 0; -1)

-1 leter nedenfra og opp, og gir deg altså den nyeste registreringen. 2 og -2 slår på binærsøk, som er langt raskere på store datasett – men krever at søkekolonnen er sortert, og gir feil svar uten varsel hvis den ikke er det.

Vanlige feil

Feilmelding Betyr Vanligste årsak
#I/T Fant ikke verdien Tall lagret som tekst, eller mellomrom
#VERDI! Områdene passer ikke sammen Søkematrise og returmatrise har ulik størrelse
#SPREDNING! Ikke plass til resultatet Celler til høyre eller under er ikke tomme
#NAVN? Funksjonen finnes ikke Excel 2019 eller eldre
Feil verdi, ingen feilmelding Formelen traff feil rad Samsvarsmodus -1/1, eller referanser som forskjøv seg

#I/T er den du møter oftest. Nesten alltid skyldes det én av disse:

  • Tall lagret som tekst. Artikkelnummeret i den ene listen er tekst, i den andre et tall. De ser like ut, men Excel regner dem ikke som like. Sjekk med =ERTALL(A2) i begge listene, og konverter med Data → Tekst til kolonner → Fullfør.
  • Mellomrom du ikke ser. Data fra andre systemer har ofte et mellomrom på slutten. =TRIMME(A2) fjerner vanlige mellomrom, men ikke hardt mellomrom (tegn 160) – det må du fjerne med =BYTT.UT(A2; TEGNKODE(160); "").
  • Feil søkematrise. Du har pekt på kolonnen med navn, mens søkeverdien er et nummer.

Test alltid om verdien i det hele tatt finnes før du endrer formelen: =ANTALL.HVIS(Priser!$A$2:$A$500; A2). Får du 0, ligger problemet i dataene, ikke i formelen. Full gjennomgang i #I/T i Excel.

Hvis du ikke har XOPPSLAG

Får du #NAVN?, har ikke versjonen din funksjonen:

Versjon XOPPSLAG Alternativ
Microsoft 365 Ja
Excel 2021 og 2024 Ja
Excel for nettet Ja
Excel 2019 og eldre Nei INDEKS + SAMMENLIGNE
Excel for Mac 2021 og nyere Ja

INDEKS og SAMMENLIGNE gjør det samme og fungerer i alle versjoner:

=INDEKS(Priser!$C$2:$C$500; SAMMENLIGNE(A2; Priser!$A$2:$A$500; 0))

Nullen til slutt betyr eksakt treff. Uten den bruker SAMMENLIGNE omtrentlig treff og krever sortert data – en klassisk kilde til stille feil.

Vil du ha en reservetekst i stedet for #I/T, pakker du hele formelen inn i HVISFEIL:

=HVISFEIL(INDEKS(Priser!$C$2:$C$500; SAMMENLIGNE(A2; Priser!$A$2:$A$500; 0)); "Ukjent artikkel")

Åpner andre filen din? Bruker du XOPPSLAG i en fil som skal deles med noen på Excel 2019, ser de _xlfn.XLOOKUP og #NAVN? – formelen kan ikke beregnes hos dem. Vet du ikke hvilken versjon mottakeren har, er INDEKS/SAMMENLIGNE det trygge valget.

Når filen blir treg

XOPPSLAG regner gjennom søkeområdet for hver eneste rad. Med noen tusen formler merkes det:

  • Ikke pek på hele kolonner. A:A er 1 048 576 rader. Begrens området, eller bruk en tabell som er nøyaktig så stor som dataene.
  • Sorter og bruk binærsøk. Søkemodus 2 på sortert data er dramatisk raskere enn standard lineært søk.
  • Hent flere kolonner med én formel i stedet for én formel per kolonne.
  • Unngå oppslag mot lukkede arbeidsbøker i stor skala.
  • Vurder Power Query. Skal to lister kobles hver måned, hører koblingen hjemme der og ikke i tusenvis av formler. Da ser du også med en gang hvor mange rader som ikke fant treff. Se Power Query i Excel.

Kort sjekkliste

  1. Bruk eksakt treff når du slår opp på en nøkkel – ikke rør samsvarsmodus.
  2. Fyll alltid ut hvis_ikke_funnet med en forklarende tekst.
  3. Gjør kilden om til en tabell i stedet for å låse områder med dollartegn.
  4. Test med ANTALL.HVIS før du feilsøker formelen.
  5. Ikke skjul #I/T med HVISFEIL før du vet hvorfor treffet mangler.

Skal du slå opp på to eller flere kriterier samtidig, fortsetter du på XOPPSLAG med flere kriterier. Er formelen din riktig, men resultatet fortsatt feil, er det som regel dataene det står på – se Excel-formelen virker ikke.

Vanlige spørsmål

Hva heter XOPPSLAG på engelsk?

XLOOKUP. Excel oversetter funksjonsnavnet automatisk når filen åpnes i en annen språkversjon, så en formel skrevet med XOPPSLAG vises som XLOOKUP hos en kollega med engelsk Excel. Du trenger ikke gjøre noe selv.

Hvorfor får jeg

Da har ikke Excel-versjonen din funksjonen. XOPPSLAG kom i Microsoft 365 og Excel 2021. I Excel 2019 og eldre må du bruke INDEKS og SAMMENLIGNE i stedet.

Kan XOPPSLAG slå opp på flere kriterier?

Ja. Du ganger søkematrisene sammen med logiske uttrykk, for eksempel =XOPPSLAG(1; (A2:A500=F2)*(B2:B500=G2); C2:C500). Det fungerer fordi SANN og USANN regnes som 1 og 0.

Kan XOPPSLAG returnere flere kolonner samtidig?

Ja. Angir du et returområde som er flere kolonner bredt, for eksempel C2:E500, returnerer formelen hele raden som en dynamisk matrise. Da må cellene til høyre være tomme, ellers får du #SPREDNING!.

Er XOPPSLAG raskere enn FINN.RAD?

På vanlige ark er forskjellen ikke merkbar. På store datasett kan XOPPSLAG være tregere fordi den som standard leter lineært gjennom hele området. Er søkekolonnen sortert stigende, gir søkemodus 2 (binærsøk) en stor gevinst.

Kan jeg bruke XOPPSLAG mot en annen arbeidsbok?

Ja, og det virker også når kildefilen er lukket. Men oppslag mot lukkede filer gjør arbeidsboken treg og skjør – flytter noen filen, knekker alle formlene. Skal det gjentas jevnlig, hør heller dataene hjemme i Power Query.

Hvorfor gir XOPPSLAG feil verdi uten å vise feilmelding?

Nesten alltid fordi samsvarsmodus er satt til -1 eller 1, som gir nærmeste treff i stedet for eksakt. Da returnerer formelen alltid noe, også når verdien ikke finnes. Sjekk fjerde og femte argument.