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=F2gir en liste med SANN og USANN for kundenummer.B2:B500=G2gir 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.