Innholdsfortegnelse
I denne opplæringen skal vi kaste lys over en av de mest mystiske innbyggerne i Excel-universet - OFFSET-funksjonen.
Så, hva er OFFSET i Excel? I et nøtteskall returnerer OFFSET-formelen en referanse til et område som er forskjøvet fra en startcelle eller et celleområde med et spesifisert antall rader og kolonner.
OFFSET-funksjonen kan være litt vanskelig å få til , så la oss gå gjennom en kort teknisk forklaring først (jeg skal gjøre mitt beste for å holde det enkelt) og deretter vil vi dekke noen av de mest effektive måtene å bruke OFFSET i Excel.
Excel OFFSET-funksjon - syntaks og grunnleggende bruk
OFFSET-funksjonen i Excel returnerer en celle eller et celleområde som er et gitt antall rader og kolonner fra en gitt celle eller et gitt område.
Syntaksen til OFFSET-funksjonen er som følger:
OFFSET(referanse, rader, kolonner, [høyde], [bredde])De første 3 argumentene er obligatoriske og de siste 2 er valgfrie. Alle argumentene kan være referanser til andre celler eller resultater som returneres av andre formler.
Det ser ut til at Microsoft har gjort en god innsats for å legge en viss mening til parameternavnene, og de gir et hint om hva du skal spesifisere i hver.
Nødvendige argumenter:
- Referanse - en celle eller et område med tilstøtende celler som du baserer forskyvningen fra. Du kan tenke på det som utgangspunktet.
- Rader - Antall raderkolonne (A):
=OFFSET(A5:B9, MATCH(B1, OFFSET(A5:B9, 0, 1, ROWS(A5:B9), 1) ,0) -1, 0, 1, 1)
Jeg vet at formelen ser litt klønete ut, men den fungerer :)
Eksempel 2 Hvordan gjøre et øvre oppslag i Excel
Som tilfellet er med at VLOOKUP ikke kan se til venstre, kan dens horisontale motparten - HLOOKUP-funksjonen - ikke se oppover for å returnere en verdi.
Hvis du trenger å skanne en øvre rad for treff, kan OFFSET MATCH-formelen hjelpe igjen, men denne gangen må du forbedre den med COLUMNS-funksjonen, slik:
OFFSET( lookup_table , return_radforskyvning , MATCH( oppslagsverdi , OFFSET( oppslagstabell , oppslagsradforskyvning , 0, 1, KOLONNER( oppslagstabell )) , 0) -1, 1, 1)Hvor:
- Lookup_row_offset - antall rader som skal flyttes fra startpunktet til oppslagsraden.
- Return_radforskyvning - antall rader som skal flyttes fra startpunktet til returraden.
Forutsatt at oppslagstabellen er B4:F5 og oppslagsverdien er i celle B1, går formelen som følger:
=OFFSET(B4:F5, 0, MATCH(B1, OFFSET(B4:F5, 1, 0, 1, COLUMNS(B4:F5)), 0) -1, 1, 1)
I vårt tilfelle, oppslagsradforskyvningen er 1 fordi oppslagsområdet vårt er 1 rad ned fra startpunktet, returradforskyvningen er 0 fordi vi returnerer treff fra den første raden i tabellen.
Eksempel 3. Toveis oppslag (etter kolonne- og radverdier)
Toveis oppslag returnerer en verdi basert på samsvar i både rader og kolonner. Og du kan bruke følgendedobbel oppslagsmatriseformel for å finne en verdi i skjæringspunktet mellom en bestemt rad og kolonne:
=OFFSET( oppslagstabell , MATCH( radoppslagsverdi , OFFSET( oppslagstabell , 0, 0, ROWS( oppslagstabell ), 1), 0) -1, MATCH( kolonneoppslagsverdi , OFFSET( oppslagstabell , 0, 0, 1, COLUMNS( oppslagstabell )), 0) -1)Gi at:
- Oppslagstabellen er A5:G9
- Verdien som skal samsvare på radene er i B2
- Verdien som skal matches på kolonnene er i B1
Du får følgende todimensjonale oppslagsformel:
=OFFSET(A5:G9, MATCH(B2, OFFSET(A5:G9, 0, 0, ROWS(A5:G9), 1), 0)-1, MATCH(B1, OFFSET(A5:G9, 0, 0, 1, COLUMNS(A5:G9)), 0) -1)
Det er vel ikke det enkleste å huske? I tillegg er dette en matriseformel, så ikke glem å trykke Ctrl + Shift + Enter for å angi den riktig.
Selvfølgelig er denne lange OFFSET-formelen ikke den eneste mulige måten å gjøre et dobbeltoppslag i Excel. Du kan få det samme resultatet ved å bruke VLOOKUP & MATCH-funksjoner, SUMPRODUCT, eller INDEX & KAMP. Det er til og med en formelfri måte - å bruke navngitte områder og kryssoperatoren (mellomrom). Følgende veiledning forklarer alle alternative løsninger i full detalj: Hvordan gjøre toveis oppslag i Excel.
OFFSET-funksjon - begrensninger og alternativer
Forhåpentligvis har formeleksemplene på denne siden kastet noen lys om hvordan du bruker OFFSET i Excel. Men for å effektivt utnytte funksjonen i dine egne arbeidsbøker, bør du ikke bare være detkunnskapsrik om styrkene, men vær også på vakt mot svakhetene.
De mest kritiske begrensningene for Excel OFFSET-funksjonen er som følger:
- Som andre flyktige funksjoner er OFFSET en ressurskrevende funksjon . Hver gang det er endringer i kildedataene, beregnes OFFSET-formlene på nytt, noe som holder Excel opptatt litt lenger. Dette er ikke et problem for en enkelt formel i et lite regneark. Men hvis det er dusinvis eller hundrevis av formler i en arbeidsbok, kan det ta lang tid å beregne Microsoft Excel på nytt.
- Excel OFFSET-formler er vanskelige å gjennomgå . Fordi referanser som returneres av OFFSET-funksjonen er dynamiske, kan store formler (spesielt med nestede OFFSETs) være ganske vanskelige å feilsøke.
Alternativer til å bruke OFFSET i Excel
Som ofte er case i Excel, kan det samme resultatet oppnås på en rekke forskjellige måter. Så, her er tre elegante alternativer til OFFSET.
- Excel-tabeller
Siden Excel 2002 har vi en virkelig fantastisk funksjon - fullverdige Excel-tabeller, i motsetning til vanlige områder. For å lage en tabell fra strukturerte data, klikker du ganske enkelt Sett inn > Tabell på Hjem -fanen eller trykk Ctrl + T .
Ved å skrive inn en formel i én celle i en Excel-tabell kan du lage en såkalt "kalkulert kolonne" som kopierer automatisk formelen til alle andre celler i den kolonnen og justererformel for hver rad i tabellen.
I tillegg justeres enhver formel som refererer til en tabells data automatisk for å inkludere eventuelle nye rader du legger til i tabellen eller ekskludere radene du sletter. Teknisk sett fungerer slike formler på tabellkolonner eller rader, som er dynamiske områder i naturen. Hver tabell i en arbeidsbok har et unikt navn (standardnavnene er Tabell1, Tabell2 osv.), og du står fritt til å gi nytt navn til tabellen via kategorien Design > Egenskaper -gruppen > ; Tabellnavn tekstboks.
Det følgende skjermbildet viser SUM-formelen som refererer til Bonus -kolonnen i Tabell3. Vær oppmerksom på at formelen inkluderer tabellens kolonnenavn i stedet for en rekke celler.
- Excel INDEX-funksjon
Selv om det ikke er helt på samme måte som OFFSET, kan Excel INDEX også brukes til å lage dynamiske områdereferanser. I motsetning til OFFSET er INDEKS-funksjonen ikke flyktig, så den vil ikke redusere hastigheten på Excel.
- INDIREKTE Excel-funksjonen
Ved å bruke INDIREKTE-funksjonen kan du opprette dynamisk område referanser fra mange kilder som celleverdier, celleverdier og tekst, navngitte områder. Den kan også dynamisk referere til et annet Excel-ark eller arbeidsbok. Du kan finne alle disse formeleksemplene i vår veiledning for INDIREKTE funksjoner i Excel.
Husker du spørsmålet som ble stilt i begynnelsen av denne opplæringen - Hva er OFFSET i Excel? Jeg håper nå du vet svaret: ) Hvis du vil ha mer praktisk erfaring, kan du gjerne laste ned øvelsesarbeidsboken vår (se nedenfor) som inneholder alle formlene som er diskutert på dette side og reverse engineer dem for dypere forståelse. Takk for at du leste!
Øvningsarbeidsbok for nedlasting
OFFSET-formeleksempler (.xlsx-fil)
for å flytte fra startpunktet, opp eller ned. Hvis rader er et positivt tall, flyttes formelen under startreferansen, i tilfelle et negativt tall går den over startreferansen. - Cols - Antall kolonner du vil ha formelen å flytte fra utgangspunktet. I tillegg til rader kan kolonner være positive (til høyre for startreferansen) eller negative (til venstre for startreferansen).
Valgfrie argumenter:
- Høyde - antall rader som skal returneres.
- Bredde - antall kolonner som skal returneres.
Både høyden og breddeargumenter må alltid være positive tall. Hvis en av dem utelates, er den standard til høyden eller bredden på referanse .
Merk. OFFSET er en flyktig funksjon og kan redusere arbeidsarket ditt. Langsomheten er direkte proporsjonal med antall celler som er beregnet på nytt.
Og nå, la oss illustrere teorien med et eksempel på den enkleste OFFSET-formelen.
Excel OFFSET-formeleksempel
Her er et eksempel på en enkel OFFSET-formel som returnerer en cellereferanse basert på et startpunkt, rader og kolonner som du angir:
=OFFSET(A1,3,1)
Formelen forteller Excel å ta celle A1 som startpunkt (referanse), flytt deretter 3 rader ned (rader-argument) og 1 kolonne til venstre (cols-argument). Som et resultat returnerer denne OFFSET-formelen verdien i celle B4.
Bildet til venstreviser funksjonens rute og skjermbildet til høyre viser hvordan du kan bruke OFFSET-formelen på virkelige data. Den eneste forskjellen mellom de to formlene er at den andre (til høyre) inkluderer en cellereferanse (E1) i radargumentet. Men siden celle E1 inneholder nummer 3, og nøyaktig samme nummer vises i radargumentet til den første formelen, vil begge returnere et identisk resultat - verdien i B4.
Excel OFFSET formler - ting å huske
- Forskyvningsfunksjonen er at Excel faktisk ikke flytter noen celler eller områder, den returnerer bare en referanse.
- Når en OFFSET formel returnerer et område av celler, refererer rader- og kolonne-argumentene alltid til cellen øverst til venstre i det returnerte raseriet.
- Referanseargumentet må inkludere en celle eller et område med tilstøtende celler, ellers vil formelen din returnere #VALUE! feil.
- Hvis de angitte radene og/eller fargene flytter en referanse over kanten av regnearket, vil Excel OFFSET-formelen returnere #REF! feil.
- OFFSET-funksjonen kan brukes i enhver annen Excel-funksjon som godtar en celle-/områdereferanse i argumentene.
Hvis du for eksempel prøver å bruke formelen =OFFSET(A1,3,1,1,3)
på egen hånd, vil det gi en #VERDI! feil, siden et område som skal returneres (1 rad, 3 kolonner) ikke passer inn i en enkelt celle. Men hvis du legger den inn i SUM-funksjonen, somdette:
=SUM(OFFSET(A1,3,1,1,3))
Formelen vil returnere summen av verdier i et 1-rad for 3-kolonne område som er 3 rader under og 1 kolonne til høyre for celle A1, dvs. totalt verdier i cellene B4:D4.
Hvorfor bruker jeg OFFSET i Excel?
Nå som du vet hva OFFSET-funksjonen gjør, kan du kanskje spør deg selv "Hvorfor gidder å bruke det?" Hvorfor ikke bare skrive en direkte referanse som B4:D4?
Excel OFFSET-formelen er veldig bra for:
Opprette dynamiske områder : Referanser som B1:C4 er statiske , som betyr at de alltid refererer til et gitt område. Men noen oppgaver er lettere å utføre med dynamiske områder. Dette er spesielt tilfelle når du jobber med å endre data, f.eks. du har et regneark der en ny rad eller kolonne legges til hver uke.
Henter området fra startcellen . Noen ganger vet du kanskje ikke den faktiske adressen til området, selv om du vet at det starter fra en bestemt celle. I slike scenarier er bruk av OFFSET i Excel den riktige veien å gå.
Hvordan bruke OFFSET-funksjonen i Excel - formeleksempler
Jeg håper du ikke har kjedet deg så mye av teorien . Uansett, nå kommer vi til den mest spennende delen - praktisk bruk av OFFSET-funksjonen.
Excel OFFSET og SUM-funksjoner
Eksemplet vi diskuterte for et øyeblikk siden demonstrerer den enkleste bruken av OFFSET & ; SUM. La oss nå se på disse funksjonene i en annen vinkel og se hvaannet kan de gjøre.
Eksempel 1. En dynamisk SUM/OFFSET-formel
Når du arbeider med kontinuerlig oppdaterte regneark, kan det være lurt å ha en SUM-formel som automatisk velger alle rader som nylig er lagt til.
Anta at du har kildedataene som ligner på det du ser i skjermbildet nedenfor. Hver måned legges det til en ny rad rett over SUM-formelen, og du vil naturligvis ha den inkludert i totalen. I det hele tatt er det to valg - enten oppdater området i SUM-formelen manuelt hver gang eller la OFFSET-formelen gjøre dette for deg.
Siden den første cellen i området som skal summeres vil spesifiseres direkte i SUM-formelen, du trenger bare å bestemme parametrene for Excel OFFSET-funksjonen, som vil få den siste cellen i området:
-
Reference
- cellen som inneholder totalen, B9 i vårt tilfelle. -
Rows
- cellen rett over totalen, som krever det negative tallet -1. -
Cols
- det er 0 fordi du ikke vil endre kolonnen.
Så, her kommer SUM / OFFSET formelmønsteret:
=SUM( første celle:(OFFSET( celle med total, -1,0)Tweaked for eksemplet ovenfor, ser formelen ut som følger:
=SUM(B2:(OFFSET(B9, -1, 0)))
Og som vist i skjermbildet nedenfor, fungerer den feilfritt:
Eksempel 2. Excel OFFSET-formel for å summere de siste N radene
I eksemplet ovenfor, anta at du vil vite mengden bonuser forde siste N månedene i stedet for totalsummen. Du vil også at formelen automatisk skal inkludere eventuelle nye rader du legger til i arket.
For denne oppgaven skal vi bruke Excel OFFSET i kombinasjon med funksjonene SUM og COUNT / COUNTA:
=SUM(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))
eller
=SUM(OFFSET(B1,COUNTA(B:B)-E1,0,E1,1))
Følgende detaljer kan hjelpe deg å forstå formlene bedre:
-
Reference
- overskriften til kolonnen hvis verdier du vil summere, celle B1 i dette eksemplet. -
Rows
- for å beregne antall rader som skal forskyves, bruker du enten COUNT- eller COUNTA-funksjonen.COUNT returnerer antall celler i kolonne B som inneholder tall, som du trekker fra de siste N månedene (tallet er celle E1), og legger til 1.
Hvis COUNTA er funksjonen du velger, du trenger ikke å legge til 1, siden denne funksjonen teller alle ikke-tomme celler, og en overskriftsrad med en tekstverdi legger til en ekstra celle som formelen vår trenger. Vær oppmerksom på at denne formelen vil fungere riktig bare på en lignende tabellstruktur - én overskriftsrad etterfulgt av rader med tall. For forskjellige tabelloppsett må du kanskje gjøre noen justeringer i OFFSET/COUNTA-formelen.
-
Cols
- antall kolonner som skal forskyves er null (0). -
Height
- antall rader som skal summeres er spesifisert i E1. -
Width
- 1 kolonne.
Bruker OFFSET-funksjonen med AVERAGE, MAX, MIN
På samme måte som vi beregnet bonusene for de siste N månedene, kan dufå et gjennomsnitt av de siste N dagene, ukene eller årene samt finne deres maksimums- eller minimumsverdier. Den eneste forskjellen mellom formlene er den første funksjonens navn:
=AVERAGE(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))
=MAX(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))
=MIN(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))
Nøkkelen Fordelen med disse formlene i forhold til den vanlige AVERAGE(B5:B8) eller MAX(B5:B8) er at du ikke trenger å oppdatere formelen hver gang kildetabellen din oppdateres. Uansett hvor mange nye rader som legges til eller slettes i regnearket ditt, vil OFFSET-formlene alltid referere til det angitte antallet siste (nederste) celler i kolonnen.
Excel OFFSET-formel for å lage et dynamisk område
Brukt i forbindelse med COUNTA, kan OFFSET-funksjonen hjelpe deg med å lage et dynamisk område som kan vise seg å være nyttig i mange scenarier, for eksempel for å lage automatisk oppdaterbare rullegardinlister.
OFFSET-formelen for et dynamisk område er som følger:
=OFFSET(Sheet_Name!$A$1, 0, 0, COUNTA(Sheet_Name!$A:$A), 1)
I hjertet av denne formelen bruker du COUNTA-funksjonen for å få antall ikke-tomme celler i målkolonnen. Dette tallet går til høydeargumentet til OFFSET og instruerer det hvor mange rader som skal returneres.
Bortsett fra det er det en vanlig offsetformel, hvor:
- Referanse er utgangspunktet du baserer forskyvningen fra, for eksempel Ark1!$A$1.
- Rader og
Cols
er begge 0 fordi det ikke er noen kolonner eller rader å forskyve. - Bredde er 1 kolonne.
Merk. Hvis du erå lage et dynamisk område i gjeldende ark, er det ikke nødvendig å inkludere arknavnet i referansene, Excel vil gjøre det for deg automatisk når du oppretter det navngitte området. Ellers må du huske å inkludere arkets navn etterfulgt av utropstegnet som i dette formeleksemplet.
Når du har opprettet et dynamisk navngitt område med OFFSET-formelen ovenfor, kan du bruke datavalidering til å lage en dynamisk rullegardinliste som oppdateres automatisk så snart du legger til eller fjerner elementer fra kildelisten.
For detaljert trinn-for-trinn veiledning om hvordan du lager rullegardinlister i Excel, sjekk ut følgende veiledninger:
- Opprette rullegardinlister i Excel - statisk, dynamisk, fra en annen arbeidsbok
- Lage en avhengig rullegardinliste
Excel OFFSET & VLOOKUP
Som alle vet, utføres enkle vertikale og horisontale oppslag med henholdsvis VLOOKUP eller HLOOKUP funksjonen. Disse funksjonene har imidlertid for mange begrensninger og snubler ofte i kraftigere og komplekse oppslagsformler. Så for å utføre mer sofistikerte oppslag i Excel-tabellene dine, må du se etter alternativer som INDEX, MATCH og OFFSET.
Eksempel 1. OFFSET-formel for venstre Vlookup i Excel
En av de mest beryktede begrensningene til VLOOKUP-funksjonen er manglende evne til å se til venstre, noe som betyr at VLOOKUP bare kan returnere en verdi tiltil høyre for oppslagskolonnen.
I vår eksempeloppslagstabell er det to kolonner - månedsnavn (kolonne A) og bonuser (kolonne B). Hvis du ønsker å få en bonus for en bestemt måned, vil denne enkle VLOOKUP-formelen fungere uten problemer:
=VLOOKUP(B1, A5:B11, 2, FALSE)
Men så snart du bytter kolonnene i oppslagstabellen, vil denne vil umiddelbart resultere i #N/A-feilen:
For å håndtere et oppslag på venstre side, trenger du en mer allsidig funksjon som egentlig ikke bryr seg om hvor returkolonnen befinner seg . En av mulige løsninger er å bruke en kombinasjon av INDEX- og MATCH-funksjoner. En annen tilnærming er å bruke OFFSET, MATCH og ROWS:
OFFSET( lookup_table , MATCH( lookup_value , OFFSET( lookup_table , 0, lookup_col_offset , ROWS( oppslagstabell ), 1) ,0) -1, return_col_offset , 1, 1)Hvor:
- Lookup_col_offset - er antall kolonner som skal flyttes fra startpunktet til oppslagskolonnen.
- Return_col_offset - er antall kolonner som skal flyttes fra startpunktet til returen. kolonne.
I vårt eksempel er oppslagstabellen A5:B9 og oppslagsverdien er i celle B1, oppslagskolonneforskyvningen er 1 (fordi vi søker etter oppslagsverdien i den andre kolonnen (B) ), vi må flytte 1 kolonne til høyre fra begynnelsen av tabellen), returkolonneforskyvningen er 0 fordi vi returnerer verdier fra den første