Hva er forskjellen på FINN(LOOKUP), FINN.RAD(VLOOKUP) og XOPPSLAG(XLOOKUP)?
Det som er felles for de tre funksjonene er at de alle er til for å søke etter verdier og referanser. Litt forenklet kan man si at XOPPSLAG() er en forbedring av FINN.RAD(), som igjen er en forbedring av OPPSLAG(). Jeg kommer i dette innlegget til å bryte ned funksjonene for å tydeliggjøre hva som skiller dem, og når de kan komme til nytte. For å ikke komplisere ting for mye, har jeg valgt å kun vise funksjonenes standardoppførsel. Funksjonene vises altså i sin reneste form, med ett eller to unntak.
For de som vil bruke den samme enkle datamengden, er filen vedlagt med funksjonene allerede fylt ut. Likevel oppfordres det til å teste med andre datasett, gjerne større. Selv om disse funksjonenes argumenter ikke er spesielt vanskelige å forstå, kan det likevel kreve en del øvelse. Enkelheten i særlig OPPSLAG() og FINN.RAD() er også det som kan gjøre funksjonene mer utfordrende, noe vi skal se nærmere på.
Overordnet om funksjonene
OPPSLAG() – utfører et tilnærmet oppslag i et område med en kolonne eller rad, og returnerer tilsvarende verdi fra et annet rad-/kolonneområde.
FINN.RAD() – er en funksjon for å slå opp data i en vertikalt organisert tabell. Funksjonen kan brukes for tilnærmet, eksakt og delvis samsvar. Verdiene som søkes må stå i den første kolonnen i tabellen.
XOPPSLAG() – er en fleksibel erstatning for OPPSLAG(), FINN.RAD(), FINN.KOLONNE() samt kombinasjonen INDEKS() / SAMMENLIGNE(). XOPPSLAG() kan brukes for tilnærmet, eksakt og delvise samsvar, og fungerer både i vertikale og horisontale områder.
Hvordan brukes OPPSLAG()?
OPPSLAG() brukes for å lete i en enkelt rad eller kolonne, og finne en verdi fra samme posisjon i en annen rad eller kolonne.
Eksempel 1:
I eksemplet nedenfor ser du hvordan du kan søke ved hjelp av en ansatts navn og finne ut hvilket kurs vedkommende tar.
=OPPSLAG(G3;B:B;C:C)
Hvordan brukes FINN.RAD()?
FINN.RAD() brukes når vi skal finne verdier i en tabell eller matrise for radintervall. FINN.RAD() er sannsynligvis en av de mest kjente Excel-funksjonene, selv om den nå har blitt overgått av den mer oppdaterte XOPPSLAG(). Likevel brukes den fortsatt i stor utstrekning, på godt og vondt. En positiv egenskap er at den er lett å bruke, men som de fleste Excel-funksjoner kan den benyttes på mange forskjellige måter. Ganske snart vil noen som har gjort seg kjent med funksjonen ønske å hente flere verdier på samme tid, eller legge til flere kriterier. Da vil man også raskt oppdage dens begrensninger sammenlignet med XOPPSLAG() eller INDEKS / SAMMENLIGNE.
FINN.RAD() trenger en komplett tabell med oppslagsverdier i den første kolonnen. Dette skaper utfordringer når man vil bruke funksjonen for flere kriterier. Akkurat som med OPPSLAG() kan FINN.RAD() sin standardmatching føre til at vi får feil verdi. Dette er grunnen til at funksjonen krever øvelse, til tross for enkelheten. Vil man bruke funksjonen effektivt, må man beherske grunnprinsippene.
Eksempel 2
Ser vi på eksemplet nedenfor, innser vi at vi kan få samme resultat som med OPPSLAG(), selv om vi her søker et navn og får et ansattnummer i retur.
=FINN.RAD(G3;A2:D21;2;USANN)
Funksjonen fungerer slik: hva vi vil slå opp; hvor funksjonen skal lete etter det; kolonnenummeret for verdien som skal returneres; og om vi ønsker en omtrentlig eller eksakt match.
Sammenligner vi tabellene for de to eksemplene, ser vi at ansattnummer og navn har byttet plass. Hvordan kommer det seg? Jo, fordi FINN.RAD()-funksjonen ikke kan hente verdier til venstre for en kolonne, funksjonen fungerer altså bare mot høyre. Selv om FINN.RAD() er en oppdatering av FINN(), finnes det altså tilfeller der FINN() passer bedre. FINN.RAD() er fortsatt mer dynamisk da den bedre kan håndtere tabeller og matriser, samt at vi har valget mellom å gjøre enten en eksakt eller omtrentlig match. Vi trenger heller ikke å bekymre oss for om verdiene våre er sortert eller ikke, i alle fall ikke ved eksakte matchinger. I eksemplet for FINN.RAD() utførte funksjonen en eksakt match, men hva om den eksakte matchen ikke gir noe resultat? Vi kunne ha pakket inn funksjonen i en HVIS()-funksjon, og satt betingelser for hva som skal returneres avhengig av utfall. Dette har XOPPSLAG() en innebygd løsning for.
Hvordan brukes XOPPSLAG?
XOPPSLAG() brukes for å finne verdier i en tabell, eller rad for rad. Funksjonen søker etter et søkekriterium og returnerer et resultat fra samme rad i en annen kolonne. Her begrenses vi ikke på samme måte som med FINN.RAD()-funksjonen, men kan bevege oss fritt. XOPPSLAG() er en fleksibel og allsidig funksjon som kan brukes i en rekke ulike situasjoner.
Vi kan velge å finne en eksakt match, omtrentlig eller delvis. Delvise matcher bruker såkalte jokertegn i form av en eller flere stjerner. Mangler det en eksakt match kan vi altså få en omtrentlig, eller vi kan velge at funksjonen skal returnere noe annet, for eksempel en feilmelding. Akkurat som enkelte andre funksjoner i Excel, kan XOPPSLAG() returnere ”#I/T” hvis ingen verdi finnes. Alternativt, og i motsetning til mange andre funksjoner, har XOPPSLAG() et valgfritt argument som kan brukes for å takle disse problemene. Ved at brukeren enkelt taster inn en verdi eller tekst som skal vises i stedet, for eksempel ”verdien kan ikke finnes”, ”ingen resultat” osv.
Eksempel 3
Det som kanskje er mest nyttig er at funksjonen kan returnere flere verdier, noe vi kan se i eksemplet nedenfor.
=TRANSPONER(XOPPSLAG(G3;B:B;C:D))
Verdien vi søker etter; matrisen eller området hvor verdien skal søkes; og matrisen eller området hvorfra verdiene skal returneres.
Her brukes også funksjonen TRANSPONER() for å få resultatene som en kolonnevektor (vertikalt) i stedet for en radvektor (horisontalt). Det er også et eksempel på hvordan man kan kombinere funksjoner, såkalt nesting. XOPPSLAG() kan altså også brukes i andre funksjoner, såkalt nesting. Fordelen med XOPPSLAG() er imidlertid at vi i større grad slipper nesting sammenlignet med FINN.RAD(). Selv om det er veldig nyttig å kunne bygge lange formler med flere funksjoner for å løse spesifikke problemer, blir det ofte komplisert og tidkrevende.
Det er altså ganske store forskjeller mellom XOPPSLAG og de to andre. Jeg har vist noen forskjeller mellom FINN() og FINN.RAD(), og vil nå gå over til å vise forskjellene mellom FINN.RAD() og XOPPSLAG().
Hvorfor er XOPPSLAG() bedre å bruke?
Det er store forskjeller mellom FINN.RAD() og XOPPSLAG(), og dermed store forskjeller mellom XOPPSLAG() og FINN(). Det er færre forskjeller mellom FINN() og FINN.RAD(), derfor vil jeg nå la den førstnevnte ligge til side.
Kolonneindeks
FINN.RAD() bruker tabellmatrise som andre argument. Dette er altså hvor oppslagsverdien finnes, inkludert kolonnen hvor vi vil finne verdien vi søker. Som tredje argument bruker FINN.RAD() kolonneindeks, som indikerer hvilken kolonne verdien skal returneres fra. Funksjonen er programmert til å søke etter oppslagsverdien i den venstre kolonnen i dette området og returnere en verdi som ligger til høyre, indeksert av det tredje argumentet, kolonneindeks.
XOPPSLAG(), derimot, separerer søkematrise og returmatrix i to argumenter. Søkematrise (andre argument) skal inneholde verdien som funksjonen skal søke etter, og returmatrix (tredje argument) vil inneholde verdien som skal returneres.
Jeg kan også påpeke at XOPPSLAG() teknisk sett ikke returnerer verdier, funksjonen returnerer referanser. INDEX() er en annen funksjon som returnerer en referanse. Hva dette betyr vil jeg ikke gå nærmere inn på her, men det er faktisk også en av XOPPSLAG()’s styrker.
Denne separasjonen av søke- og returmatrix gjør funksjonen mer fleksibel enn FINN.RAD(). Det spiller ingen rolle hvor kolonnene befinner seg.
Legge til kolonner
Det som er beskrevet over gjør at FINN.RAD() kan returnere feil verdi hvis en kolonne bytter plass, legges til eller fjernes. Dette trenger man ikke tenke på med XOPPSLAG(), siden den ikke bruker kolonneindeks som argument, slik FINN.RAD() gjør.
Feilmeldinger og standardoppførsel
FINN.RAD() har ingen innebygd funksjon for å håndtere verdier som ikke finnes. Et alternativ hadde vært å pakke FINN.RAD() inn i en HVIS()-funksjon eller enda bedre en HVISFEIL()-funksjon. XOPPSLAG() lar brukeren tilpasse en melding hvis søkeverdien ikke finnes i tabellen.
Det bør også nevnes at funksjonenes standardoppførsel er forskjellig. FINN.RAD() utfører en omtrentlig match som standard, med mindre annet oppgis. XOPPSLAG() søker etter eksakt match som standard. Derfor er en fallgruve med FINN.RAD() at det lettere kan oppstå feil.
Siste forekomst av en verdi
XOPPSLAG()’s siste argument (det tredje valgfrie) kan brukes til å søke etter siste forekomst av en verdi. Man kan velge å søke fra siste til første, eller første til siste. Dette er noe FINN.RAD() begrenses av. Andre funksjoner trengs for å oppnå det samme med FINN.RAD().
Jokertegn
Med XOPPSLAG() kan man utføre delvise matcher, altså søk med jokertegn. Jokertegnene er i form av en stjerne (*), og illustreres i bildet nedenfor:

Merk at jeg også i bildet viser et eksempel på hvordan argumentet for feilmeldinger kan brukes, altså det fjerde argumentet. I det femte argumentet må man manuelt angi at funksjonen skal bruke jokertegn.
Svakheter ved XOPPSLAG()
Den eneste svake siden er at funksjonen ikke er tilgjengelig i eldre Excel-/Office-versjoner. Derfor kan det fortsatt være nyttig å mestre FINN() og FINN.RAD() før man bygger mer komplekse formler. Dette er verdt å tenke på dersom man deler regneark med andre.
Husk også at det alltid kan være en risiko å inkludere overskrifter i noen av funksjonene. Dette gjelder også XOPPSLAG().
Oppsummering
| FINN.RAD() | XOPPSLAG() | |
|---|---|---|
| Eksakt match som standard | Nei | Ja |
| Støtter eksakt match | Ja | Ja |
| Krever sorterte verdier | Ja, for omtrentlig match | Ja, i et veldig spesifikt tilfelle* |
| Kan returnere feil verdier | Ja, ved omtrentlig match | Ja, i et veldig spesifikt tilfelle* |
| Returnerer verdier til høyre for søkeområdet | Ja | Ja |
| Returnerer flere verdier/referanser | Nei | Ja |
| Søker fra topp til bunn | Ja | Ja |
| Søker fra bunn til topp | Nei | Ja |
| Støtter delvis match | Nei | Ja |
| Legge til kolonner fører til feil | Ja | Nei |
*ved binære søk. Vet du ikke hva binært søk er, vil du sannsynligvis aldri bruke det.
Tabellen gir en oversikt over forskjellene mellom FINN.RAD() og XOPPSLAG(). FINN() skal ikke glemmes helt, da det er en enklere variant av XOPPSLAG() med færre funksjoner. Det finnes situasjoner der FINN() faktisk er bedre enn FINN.RAD().
XOPPSLAG() er likevel en klar forbedring av de to andre. Sammenlignet med FINN() lar den oss unngå mange tidkrevende formler som FINN.RAD() krever for mer komplekse problemer. Selv om man fortsatt bør kjenne FINN.RAD() og FINN(), er XOPPSLAG() en nødvendig forbedring.
Jeg håper dette hjelper noen å forstå forskjellene mellom de tre funksjonene. Jeg oppfordrer alle til å eksperimentere med funksjonene. Hvis noen blir inspirert, kan det være nyttig å ta kursene Excelkurs Basis og/eller Excelfunksjoner Fordypning.














