Formler

XOPPSLAG med flere kriterier

Kort svar

Du ganger kriteriene sammen i søkematrisen og leter etter 1: =XOPPSLAG(1; (A2:A500=F2)*(B2:B500=G2); C2:C500; "Ikke funnet"). Det fungerer fordi SANN og USANN regnes som 1 og 0, slik at bare rader der alle kriteriene stemmer gir 1. I Excel 2019 og eldre bruker du INDEKS med SAMMENLIGNE på samme prinsipp.

Et vanlig oppslag finner én verdi ut fra ett kriterium. Men ofte er det kombinasjonen som er unik: samme artikkel kan ha ulik pris per kunde, og samme kunde kan ha flere ordrer per måned.

Ta denne prislisten, der verken kundenummer eller artikkelnummer alene er nok:

A B C
1 Kunde Artikkel Pris
2 100 10241 12,50
3 100 10242 4,90
4 205 10241 11,20

Slår du opp på kunde 100 alene, får du prisen på den første artikkelen deres. Det er kombinasjonen av de to du er ute etter.

Metoden: gang kriteriene sammen

=XOPPSLAG(1; (A2:A500=F2)*(B2:B500=G2); C2:C500; "Ikke funnet")

  • A2:A500=F2 gir en liste med SANN og USANN for kundenummer.
  • B2:B500=G2 gir det samme for artikkelnummer.
  • Gangetegnet gjør SANN til 1 og USANN til 0.
  • Bare rader der begge er sanne gir 1 × 1 = 1.
  • Formelen leter derfor etter tallet 1.

Trenger du et tredje kriterium, ganger du på en parentes til:

=XOPPSLAG(1; (A2:A500=F2)*(B2:B500=G2)*(C2:C500=H2); D2:D500; "Ikke funnet")

Prinsippet er det samme uansett antall kriterier.

Bruk like store områder. Alle matrisene må dekke nøyaktig de samme radene. A2:A500 sammen med B2:B400 gir #VERDI!.

Se hva formelen faktisk gjør

Blir dette abstrakt, kan du se mellomregningen med egne øyne. Marker delen (A2:A500=F2)*(B2:B500=G2) i formellinjen og trykk F9. Excel viser da listen den jobber med – {0;0;1;0;0} og så videre. Trykk Esc etterpå, ikke Enter, ellers erstattes formelen med verdiene.

Er alle tallene 0, vet du at ingen rad oppfyller begge kriteriene. Er det flere 1-ere, vet du at kombinasjonen ikke er unik.

Kriterier som ikke er likhet

Alt som gir SANN eller USANN kan ganges inn – ikke bare =. Skal du finne prisen som gjaldt på et gitt tidspunkt, eller ordrer over et visst beløp:

=XOPPSLAG(1; (A2:A500=F2)*(D2:D500>=DATO(2026;1;1))*(D2:D500<=DATO(2026;3;31)); C2:C500; "Ingen treff")

Her må kunden stemme og datoen ligge i første kvartal. Merk at datoer må skrives som datoer – "01.01.2026" i anførselstegn er tekst, og sammenligner seg ikke riktig mot en datokolonne.

ELLER i stedet for OG

Ganger du kriteriene, må alle stemme. Vil du at det skal holde at ett av dem stemmer, bytter du gangetegnet med pluss og leter etter en verdi over null:

=XOPPSLAG(SANN; ((A2:A500=F2)+(B2:B500=G2))>0; C2:C500; "Ingen treff")

Plussen legger sammen 1 og 0, og >0 gjør resultatet om til SANN eller USANN igjen. Dette treffer typisk mange rader, så tenk gjennom om det egentlig er FILTER du er ute etter.

Alternativ: hjelpekolonne

Er formelen over vanskelig å forklare til dem som skal arve arket, gjør du det samme med en hjelpekolonne som slår sammen nøklene:

=A2&"|"&B2

Lag samme kolonne i oppslagstabellen, og slå opp på den sammensatte nøkkelen:

=XOPPSLAG(F2&"|"&G2; $D$2:$D$500; $E$2:$E$500; "Ikke funnet")

Skilletegnet | er viktig. Uten det vil 12 og 345 gi samme nøkkel som 123 og 45.

Fordelen med hjelpekolonnen er at den er lett å forstå, lett å feilsøke – du ser nøkkelen med egne øyne – og at den er raskere enn ganging på store ark. Ulempen er en ekstra kolonne som må vedlikeholdes, og at den må skjules før arket sendes videre.

Alternativ: FILTER

Har du Microsoft 365 eller Excel 2021, gjør FILTER det samme med en syntaks de fleste synes er lettere å lese:

=FILTER(C2:C500; (A2:A500=F2)*(B2:B500=G2); "Ingen treff")

Forskjellen er at FILTER returnerer alle treffene, ikke bare det første. Er kombinasjonen unik, får du én verdi og oppfører deg som et oppslag. Er den ikke unik, ser du med en gang at det finnes flere – noe XOPPSLAG skjuler for deg.

Det er en god grunn til å bruke FILTER mens du bygger arket, selv om du bytter til XOPPSLAG til slutt.

Uten XOPPSLAG: INDEKS og SAMMENLIGNE

I Excel 2019 og eldre bruker du samme prinsipp, men med SAMMENLIGNE:

=INDEKS(C2:C500; SAMMENLIGNE(1; (A2:A500=F2)*(B2:B500=G2); 0))

I versjoner uten dynamiske matriser må dette bekreftes med Ctrl + Shift + Enter. Da settes det klammeparenteser rundt formelen automatisk – ikke skriv dem selv.

En variant som ikke krever matriseformel, er SUMMERPRODUKT. Den fungerer bare når svaret er et tall:

=SUMMERPRODUKT((A2:A500=F2)*(B2:B500=G2)*C2:C500)

Legg merke til hva denne faktisk gjør: den summerer alle radene som treffer. Er kombinasjonen unik, er summen lik verdien. Er den ikke unik, får du totalen – noe som ofte er riktigere enn å hente første treff.

Vil du unngå matriseformler helt, er den sammensatte hjelpekolonnen det tryggeste valget i eldre versjoner.

Når flere rader treffer

Alle metodene over returnerer første treff. Det er sjelden det du vil hvis kombinasjonen ikke er unik.

Siste treff:

=XOPPSLAG(1; (A2:A500=F2)*(B2:B500=G2); C2:C500; ""; 0; -1)

Alle treff (Microsoft 365 og Excel 2021):

=FILTER(C2:C500; (A2:A500=F2)*(B2:B500=G2); "Ingen treff")

Tell hvor mange treff det er – gjør dette først, så vet du hva du har med å gjøre:

=ANTALL.HVIS.SETT(A2:A500; F2; B2:B500; G2)

Summen av alle treff – ofte det du egentlig var ute etter:

=SUMMER.HVIS.SETT(C2:C500; A2:A500; F2; B2:B500; G2)

Det siste er verdt å tenke over. Mange bygger et komplisert flerkriterie-oppslag når spørsmålet i realiteten er «hvor mye har denne kunden kjøpt av denne artikkelen» – og da er SUMMER.HVIS.SETT både enklere, raskere og mindre sårbar for duplikater.

Feilsøking

Symptom Årsak Løsning
#I/T Ingen rad oppfyller alle kriteriene Test hvert kriterium for seg
#VERDI! Områdene er ulike i størrelse Kontroller start- og sluttrad i alle matrisene
Feil rad returneres Kombinasjonen er ikke unik Tell treff med ANTALL.HVIS.SETT
Alltid #I/T på tall Tall lagret som tekst i én av listene =ERTALL(A2) i begge
Datokriterier treffer ikke Datoen er tekst Konverter med DATOVERDI

Får du #I/T? Test hvert kriterium hver for seg først: =ANTALL.HVIS(A2:A500; F2) og =ANTALL.HVIS(B2:B500; G2). Er ett av dem 0, vet du hvilket kriterium som ikke treffer. Se #I/T i Excel for hvorfor verdier som ser like ut ikke matcher.

Ytelse: når du bør bytte metode

Flerkriterie-oppslag med ganging regner gjennom hele området for hvert kriterium, i hver eneste rad. 500 rader med to kriterier er 500 000 sammenligninger – det merkes ikke. 20 000 rader med tre kriterier er 1,2 milliarder, og da fryser filen hver gang du skriver noe.

Antall rader Anbefalt metode
Under 5 000 Ganging av kriterier – enkleste å vedlikeholde
5 000–50 000 Sammensatt hjelpekolonne
Over 50 000 Power Query eller datamodellen

Skal koblingen gjentas hver måned, hører den uansett hjemme i Power Query, der du kobler tabellene én gang og oppdaterer med ett klikk. Se også slå sammen to Excel-ark.

Velg riktig metode

Du vil Bruk
Hente én verdi, unik kombinasjon XOPPSLAG med ganging
Se alle rader som treffer FILTER
Summere alt som treffer SUMMER.HVIS.SETT
Telle treff ANTALL.HVIS.SETT
Excel 2019 eller eldre Hjelpekolonne, eller INDEKS/SAMMENLIGNE
Mange rader, gjentas jevnlig Power Query

Er du usikker på grunnfunksjonen først, se XOPPSLAG i Excel.

Vanlige spørsmål

Hvorfor leter formelen etter tallet 1?

Fordi hvert kriterium gir SANN eller USANN, som Excel regner som 1 og 0. Ganger du dem sammen, blir resultatet 1 bare i rader der alle kriteriene stemmer – og 0 i alle andre.

Kan jeg bruke ELLER i stedet for OG?

Ja. Bytt gangetegnet med pluss, og let etter en verdi større enn 0. Da holder det at ett av kriteriene stemmer. Bruk MAKS eller HVIS rundt for å håndtere at flere rader kan treffe.

Hva gjør jeg hvis flere rader oppfyller alle kriteriene?

XOPPSLAG returnerer den første. Vil du ha den siste, setter du søkemodus til -1. Skal du se alle treffene, bruker du FILTER i stedet.

Må formelen bekreftes med Ctrl + Shift + Enter?

Ikke i Microsoft 365 eller Excel 2021, som håndterer matriser automatisk. I Excel 2019 og eldre må INDEKS/SAMMENLIGNE-varianten bekreftes med Ctrl + Shift + Enter for å regne riktig.

Kan jeg bruke større enn eller mindre enn som kriterium?

Ja. Alle uttrykk som gir SANN eller USANN kan ganges inn, for eksempel (D2:D500>=DATO(2026;1;1)). Det er slik du slår opp innenfor en periode.

Hvorfor får jeg

Fordi minst ett av områdene i formelen dekker andre rader enn de andre. Alle matrisene du ganger sammen må starte og slutte på nøyaktig samme rad – A2:A500 sammen med B2:B400 gir alltid

Hvorfor blir filen treg av disse formlene?

Hver formel regner gjennom hele området for hvert kriterium, i hver eneste rad. Med tusenvis av rader blir det mange millioner beregninger. En sammensatt hjelpekolonne, eller en sammenslåing i Power Query, er langt raskere.