INHOUDSOPGAWE
In hierdie tutoriaal gaan ons 'n bietjie lig werp op een van die mees geheimsinnigste inwoners van die Excel-heelal - die OFFSET-funksie.
So, wat is OFFSET in Excel? In 'n neutedop, die OFFSET-formule gee 'n verwysing terug na 'n reeks wat verreken is vanaf 'n beginsel of 'n reeks selle deur 'n gespesifiseerde aantal rye en kolomme.
Die OFFSET-funksie kan 'n bietjie moeilik wees om te kry , so kom ons gaan eers oor 'n kort tegniese verduideliking (ek sal my bes doen om dit eenvoudig te hou) en dan sal ons 'n paar van die doeltreffendste maniere dek om OFFSET in Excel te gebruik.
Excel OFFSET-funksie - sintaksis en basiese gebruike
Die OFFSET-funksie in Excel gee 'n sel of reeks selle terug wat 'n gegewe aantal rye en kolomme van 'n gegewe sel of reeks is.
Die sintaksis van die OFFSET-funksie is soos volg:
OFFSET(verwysing, rye, kole, [hoogte], [breedte])Die eerste 3 argumente word vereis en die laaste 2 is opsioneel. Al die argumente kan verwysings na ander selle of resultate wees wat deur ander formules teruggestuur word.
Dit lyk of Microsoft 'n goeie poging aangewend het om betekenis in die parameters se name te gee, en hulle gee wel 'n wenk van wat jy is veronderstel om in elkeen te spesifiseer.
Vereiste argumente:
- Verwysing - 'n sel of 'n reeks aangrensende selle waaruit jy die offset baseer. Jy kan daaraan dink as die beginpunt.
- Rye - Die aantal ryekolom (A):
=OFFSET(A5:B9, MATCH(B1, OFFSET(A5:B9, 0, 1, ROWS(A5:B9), 1) ,0) -1, 0, 1, 1)
Ek weet die formule lyk 'n bietjie lomp, maar dit werk wel :)
Voorbeeld 2 Hoe om 'n boonste opsoek in Excel te doen
Soos die geval is met VLOOKUP wat nie na links kan kyk nie, kan sy horisontale eweknie - HLOOKUP-funksie - nie opwaarts kyk om 'n waarde terug te gee nie.
As jy 'n boonste ry vir passings moet skandeer, kan die OFFSET MATCH-formule weer help, maar hierdie keer sal jy dit met die KOLOMME-funksie moet verbeter, soos volg:
OFFSET( lookup_table , return_row_offset , MATCH( lookup_value , OFFSET( lookup_table , lookup_row_offset , 0, 1, COLUMNS( lookup_table )) , 0) -1, 1, 1)Waar:
- Opsoek_ry_afset - die aantal rye om van die beginpunt na die opsoekry te beweeg.
- Return_row_offset - die aantal rye om van die beginpunt na die retoerry te skuif.
As aangeneem word dat die opsoektabel B4:F5 is en die opsoekwaarde in sel B1 is, gaan die formule soos volg:
=OFFSET(B4:F5, 0, MATCH(B1, OFFSET(B4:F5, 1, 0, 1, COLUMNS(B4:F5)), 0) -1, 1, 1)
In ons geval, die opsoekry-afset is 1, want ons opsoekreeks is 1 ry af vanaf die beginpunt, die terugkeer-ry-afset is 0, want ons gee passings vanaf die eerste ry in die tabel.
Voorbeeld 3. Tweerigting-opsoek (volgens kolom- en rywaardes)
Tweerigting-opsoek gee 'n waarde terug gebaseer op passings in beide die rye en kolomme. En jy kan die volgende gebruikdubbel opsoek skikking formule om 'n waarde te vind by die kruising van 'n sekere ry en kolom:
=VERSKEINING( opsoektabel , MATCH( ryopsoekwaarde , VERSKEINING( opsoektabel , 0, 0, ROWS( opsoektabel ), 1), 0) -1, MATCH( kolomopsoekwaarde , VERSKRYWING( opsoektabel , 0, 0, 1, COLUMNS( opsoektabel )), 0) -1)Gegewe dat:
- Die opsoektabel is A5:G9
- Die waarde om te pas op die rye is in B2
- Die waarde om te pas op die kolomme is in B1
Jy kry die volgende tweedimensionele opsoekformule:
=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)
Dit is nie die maklikste ding om te onthou nie, is dit? Daarbenewens is dit 'n skikkingsformule, so moenie vergeet om Ctrl + Shift + Enter te druk om dit korrek in te voer nie.
Natuurlik is hierdie lang OFFSET-formule nie die enigste moontlike manier om 'n dubbele opsoek in Excel te doen. Jy kan dieselfde resultaat kry deur die VLOOKUP & MATCH funksies, SUMPRODUCT, of INDEX & WEDSTRYD. Daar is selfs 'n formulevrye manier - om benoemde reekse en die kruisingsoperateur (spasie) te gebruik. Die volgende tutoriaal verduidelik alle alternatiewe oplossings volledig: Hoe om tweerigting-opsoek in Excel te doen.
OFFSET-funksie - beperkings en alternatiewe
Hopelik het die formulevoorbeelde op hierdie bladsy 'n bietjie afgeskud lig oor hoe om OFFSET in Excel te gebruik. Om die funksie in jou eie werkboeke doeltreffend te benut, moet jy egter nie net wees niebewus van sy sterk punte, maar wees ook versigtig vir sy swakpunte.
Die mees kritieke beperkings van die Excel OFFSET-funksie is soos volg:
- Soos ander vlugtige funksies, is OFFSET 'n hulpbronhonger funksie . Wanneer daar enige verandering in die brondata is, word jou OFFSET-formules herbereken, wat Excel 'n bietjie langer besig hou. Dit is nie 'n probleem vir 'n enkele formule in 'n klein sigblad nie. Maar as daar dosyne of honderde formules in 'n werkboek is, kan Microsoft Excel nogal 'n rukkie neem om te herbereken.
- Excel OFFSET-formules is moeilik om te hersien . Omdat verwysings wat deur die OFFSET-funksie teruggestuur word dinamies is, kan groot formules (veral met geneste OFFSETs) nogal moeilik wees om te ontfout.
Alternatiewe vir die gebruik van OFFSET in Excel
Soos dikwels die geval in Excel, kan dieselfde resultaat op 'n aantal verskillende maniere bereik word. So, hier is drie elegante alternatiewe vir OFFSET.
- Excel-tabelle
Sedert Excel 2002 het ons 'n werklik wonderlike kenmerk - volwaardige Excel-tabelle, in teenstelling met gewone reekse. Om 'n tabel van gestruktureerde data te maak, klik jy eenvoudig Voeg in > Tabel op die Tuis -oortjie of druk Ctrl + T .
Deur 'n formule in een sel in 'n Excel-tabel in te voer, kan jy 'n sogenaamde "berekende kolom" skep wat kopieer die formule outomaties na alle ander selle in daardie kolom en pas dieformule vir elke ry in die tabel.
Boonop pas enige formule wat na 'n tabel se data verwys outomaties aan om enige nuwe rye wat jy by die tabel voeg in te sluit of die rye wat jy uitvee uit te sluit. Tegnies werk sulke formules op tabelkolomme of -rye, wat dinamiese reekse van aard is. Elke tabel in 'n werkboek het 'n unieke naam (die verstek name is Tabel1, Tabel2, ens.) en dit staan jou vry om jou tabel te hernoem via die Ontwerp -oortjie > Eienskappe -groep > ; Tabelnaam -tekskassie.
Die volgende skermkiekie demonstreer die SOM-formule wat na die Bonus -kolom van Tabel3 verwys. Let asseblief daarop dat die formule die tabel se kolomnaam eerder as 'n reeks selle insluit.
- Excel INDEX-funksie
Alhoewel dit nie presies op dieselfde manier as OFFSET is nie, kan Excel INDEX ook gebruik word om dinamiese reeksverwysings te skep. Anders as OFFSET, is die INDEKS-funksie nie wisselvallig nie, dus sal dit nie jou Excel vertraag nie.
- Excel INDIREKTE funksie
Deur die INDIREKTE funksie te gebruik, kan jy dinamiese reeks skep verwysings uit baie bronne soos selwaardes, selwaardes en teks, benoemde reekse. Dit kan ook dinamies na 'n ander Excel-blad of werkboek verwys. Jy kan al hierdie formule voorbeelde vind in ons Excel INDIREKTE funksie handleiding.
Onthou jy die vraag wat aan die begin van hierdie tutoriaal gevra is - Wat is OFFSET in Excel? Ek hoop nou weet jy die antwoord: ) As jy meer praktiese ervaring wil hê, laai gerus ons oefenwerkboek af (sien asseblief hieronder) wat al die formules bevat wat hieroor bespreek is bladsy en reverse engineer hulle vir dieper begrip. Dankie dat jy gelees het!
Oefenwerkboek om af te laai
OFFSET formule voorbeelde (.xlsx lêer)
om van die beginpunt af te beweeg, op of af. As rye 'n positiewe getal is, beweeg die formule onder die beginverwysing, in die geval van 'n negatiewe getal gaan dit bokant die beginverwysing. - Kol - Die aantal kolomme wat jy die formule wil hê om van die beginpunt af te beweeg. Sowel as rye, kan kole positief (regs van die beginverwysing) of negatief (links van die beginverwysing) wees.
Opsionele argumente:
- Hoogte - die aantal rye om terug te gee.
- Breedte - die aantal kolomme om terug te gee.
Beide die hoogte en breedte-argumente moet altyd positiewe getalle wees. As een uitgelaat word, is dit verstek na die hoogte of breedte van verwysing .
Let wel. OFFSET is 'n wisselvallige funksie en kan jou werkblad vertraag. Die stadigheid is direk eweredig aan die aantal selle wat herbereken is.
En nou, kom ons illustreer die teorie met 'n voorbeeld van die eenvoudigste OFFSET formule.
Excel OFFSET formule voorbeeld
Hier is 'n voorbeeld van 'n eenvoudige OFFSET-formule wat 'n selverwysing gee gebaseer op 'n beginpunt, rye en kole wat jy spesifiseer:
=OFFSET(A1,3,1)
Die formule sê vir Excel om sel A1 as die beginpunt (verwysing), skuif dan 3 rye af (rye argument) en 1 kolom na links (cols argument). As gevolg hiervan gee hierdie OFFSET-formule die waarde in sel B4 terug.
Die prent aan die linkerkantwys die funksie se roete en die skermkiekie aan die regterkant demonstreer hoe jy die OFFSET-formule op werklike data kan gebruik. Die enigste verskil tussen die twee formules is dat die tweede een (aan die regterkant) 'n selverwysing (E1) in die rye-argument insluit. Maar aangesien sel E1 nommer 3 bevat, en presies dieselfde getal in die rye-argument van die eerste formule verskyn, sal albei 'n identiese resultaat gee - die waarde in B4.
Excel OFFSET formules - dinge om te onthou
- Die OFFSET funksie is Excel skuif nie eintlik enige selle of reekse nie, dit gee net 'n verwysing terug.
- Wanneer 'n OFFSET formule 'n reeks gee van selle, verwys die rye en kole-argumente altyd na die boonste linker sel in die teruggestuurde woede.
- Die verwysingsargument moet 'n sel of reeks aangrensende selle insluit, anders sal jou formule die #VALUE! fout.
- As die gespesifiseerde rye en/of kole 'n verwysing oor die rand van die sigblad skuif, sal jou Excel OFFSET formule die #REF! fout.
- Die OFFSET-funksie kan gebruik word binne enige ander Excel-funksie wat 'n sel-/reeksverwysing in sy argumente aanvaar.
As jy byvoorbeeld die formule =OFFSET(A1,3,1,1,3)
probeer gebruik op sy eie sal dit 'n #WAARDE gooi! fout, aangesien 'n reeks om terug te keer (1 ry, 3 kolomme) nie in 'n enkele sel pas nie. As jy dit egter in die SUM-funksie insluit, sooshierdie:
=SUM(OFFSET(A1,3,1,1,3))
Die formule sal die som van waardes in 'n 1-ry vir 3-kolom reeks terugstuur wat 3 rye onder en 1 kolom regs van sel A1 is, d.w.s. totaal van waardes in selle B4:D4.
Hoekom gebruik ek OFFSET in Excel?
Nou dat jy weet wat die OFFSET-funksie doen, kan jy dalk vra jouself af "Hoekom die moeite doen om dit te gebruik?" Hoekom skryf jy nie bloot 'n direkte verwysing soos B4:D4 nie?
Die Excel OFFSET formule is baie goed vir:
Skep dinamiese reekse : Verwysings soos B1:C4 is staties , wat beteken dat hulle altyd na 'n gegewe reeks verwys. Maar sommige take is makliker om uit te voer met dinamiese reekse. Dit is veral die geval wanneer jy met die verandering van data werk, bv. jy het 'n werkblad waar 'n nuwe ry of kolom elke week bygevoeg word.
Kry die reeks vanaf die beginsel . Soms ken jy dalk nie die werklike adres van die reeks nie, alhoewel jy weet dat dit by 'n sekere sel begin. In sulke scenario's is die gebruik van OFFSET in Excel die regte manier om te gaan.
Hoe om OFFSET-funksie in Excel te gebruik - formulevoorbeelde
Ek hoop nie jy het verveeld geraak met soveel teorie nie . In elk geval, nou kom ons by die opwindendste deel - praktiese gebruike van die OFFSET-funksie.
Excel OFFSET en SUM-funksies
Die voorbeeld wat ons 'n oomblik gelede bespreek het, demonstreer die eenvoudigste gebruik van OFFSET & ; SOM. Kom ons kyk nou na hierdie funksies in 'n ander hoek en kyk watanders kan hulle doen.
Voorbeeld 1. 'n Dinamiese SOM / OFFSET-formule
Wanneer jy met voortdurend bygewerkte werkblaaie werk, wil jy dalk 'n SOM-formule hê wat outomaties alle nuut bygevoegde rye kies.
Gestel jy het die brondata soortgelyk aan wat jy in die skermkiekie hieronder sien. Elke maand word 'n nuwe ry net bokant die SOM-formule bygevoeg, en natuurlik wil jy dit in die totaal hê. In die geheel is daar twee keuses - óf werk die reeks in die SOM-formule elke keer handmatig op óf laat die OFFSET-formule dit vir jou doen.
Sedert die eerste sel van die reeks om op te som sal direk in die SOM-formule gespesifiseer word, jy hoef net te besluit oor die parameters vir die Excel OFFSET-funksie, wat daardie laaste sel van die reeks sal kry:
-
Reference
- die sel wat die totaal bevat, B9 in ons geval. -
Rows
- die sel reg bokant die totaal, wat die negatiewe getal -1 vereis. -
Cols
- dit is 0 want jy wil nie verander nie die kolom.
So, hier gaan die SOM / OFFSET formulepatroon:
=SOM( eerste sel:(OFFSET( sel met totaal, -1,0)Aangepas vir die bogenoemde voorbeeld, lyk die formule soos volg:
=SUM(B2:(OFFSET(B9, -1, 0)))
En soos gedemonstreer in die onderstaande skermkiekie, werk dit foutloos:
Voorbeeld 2. Excel OFFSET formule om die laaste N rye op te som
In die voorbeeld hierbo, veronderstel jy wil die hoeveelheid bonusse vir weetdie afgelope N maande eerder as groottotaal. Jy wil ook hê die formule moet outomaties enige nuwe rye wat jy by die blad voeg, insluit.
Vir hierdie taak gaan ons Excel OFFSET gebruik in kombinasie met die SUM en COUNT / COUNTA funksies:
=SUM(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))
of
=SUM(OFFSET(B1,COUNTA(B:B)-E1,0,E1,1))
Die volgende besonderhede kan jou help om die formules beter te verstaan:
-
Reference
- die kop van die kolom wie se waardes jy wil optel, sel B1 in hierdie voorbeeld. -
Rows
- om die aantal rye om te verreken te bereken, gebruik jy óf die COUNT of COUNTA funksie.COUNT gee die aantal selle in kolom B terug wat getalle bevat, waarvan jy die laaste N maande aftrek (die getal is sel E1), en tel 1 by.
As COUNTA jou funksie van keuse is, jy hoef nie 1 by te voeg nie, aangesien hierdie funksie alle nie-leë selle tel, en 'n kopry met 'n tekswaarde voeg 'n ekstra sel by wat ons formule benodig. Neem asseblief kennis dat hierdie formule slegs korrek sal werk op 'n soortgelyke tabelstruktuur - een kopry gevolg deur rye met nommers. Vir verskillende tabeluitlegte sal jy dalk 'n paar aanpassings in die OFFSET/COUNTA formule moet maak.
-
Cols
- die aantal kolomme om te verreken is nul (0). -
Height
- die aantal rye om op te som word in E1 gespesifiseer. -
Width
- 1 kolom.
Gebruik OFFSET-funksie met AVERAGE, MAX, MIN
Op dieselfde manier soos ons die bonusse vir die laaste N maande bereken het, kan jykry 'n gemiddeld van die laaste N dae, weke of jare asook vind hul maksimum of minimum waardes. Die enigste verskil tussen die formules is die eerste funksie se naam:
=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))
Die sleutel voordeel van hierdie formules bo die gewone AVERAGE(B5:B8) of MAX(B5:B8) is dat jy nie die formule hoef op te dateer elke keer as jou brontabel opgedateer word nie. Maak nie saak hoeveel nuwe rye in jou werkblad bygevoeg of uitgevee word nie, die OFFSET-formules sal altyd verwys na die gespesifiseerde aantal laaste (onderste) selle in die kolom.
Excel OFFSET-formule om 'n dinamiese reeks te skep
Gebruik in samewerking met COUNTA, kan die OFFSET-funksie jou help om 'n dinamiese reeks te maak wat nuttig kan wees in baie scenario's, byvoorbeeld om outomaties opdateerbare aftreklyste te skep.
Die OFFSET-formule vir 'n dinamiese reeks is soos volg:
=OFFSET(Sheet_Name!$A$1, 0, 0, COUNTA(Sheet_Name!$A:$A), 1)
In die kern van hierdie formule gebruik jy die COUNTA-funksie om die aantal nie-leë selle in die teikenkolom te kry. Daardie getal gaan na die hoogte-argument van OFFSET wat dit opdrag gee hoeveel rye om terug te gee.
Behalwe dit is dit 'n gewone Offset-formule, waar:
- Verwysing is die beginpunt vanwaar jy die afset baseer, byvoorbeeld Blad1!$A$1.
- Ry en
Cols
is albei 0 omdat daar geen kolomme of rye is om te verreken nie. - Breedte is 1 kolom.
Let wel. As jyom 'n dinamiese reeks in die huidige blad te maak, is dit nie nodig om die bladnaam by die verwysings in te sluit nie, Excel sal dit outomaties vir jou doen wanneer die benoemde reeks geskep word. Andersins, maak seker dat jy die blad se naam insluit, gevolg deur die uitroepteken soos in hierdie formulevoorbeeld.
Sodra jy 'n dinamiese benoemde reeks geskep het met die bogenoemde OFFSET formule, kan jy Data Validation gebruik om 'n dinamiese aftreklys te maak wat outomaties sal opdateer sodra jy items byvoeg of uit die bronnelys verwyder.
Vir die gedetailleerde stap-vir-stap leiding oor die skep van aftreklyste in Excel, kyk asseblief na die volgende tutoriale:
- Skep aftreklyste in Excel - staties, dinamies, uit 'n ander werkboek
- Maak 'n afhanklike aftreklys
Excel OFFSET & VLOOKUP
Soos almal weet, word eenvoudige vertikale en horisontale opsoeke met onderskeidelik die VLOOKUP of HLOOKUP funksie uitgevoer. Hierdie funksies het egter te veel beperkings en struikel dikwels in kragtiger en komplekse opsoekformules. Dus, om meer gesofistikeerde opsoeke in jou Excel-tabelle uit te voer, moet jy alternatiewe soek soos INDEX, MATCH en OFFSET.
Voorbeeld 1. OFFSET formule vir 'n linker Vlookup in Excel
Een van die mees berugte beperkings van die VLOOKUP-funksie is die onvermoë om aan die linkerkant daarvan te kyk, wat beteken dat VLOOKUP slegs 'n waarde kan teruggee naregs van die opsoekkolom.
In ons voorbeeldopsoektabel is daar twee kolomme - maandname (kolom A) en bonusse (kolom B). As jy 'n bonus vir 'n sekere maand wil kry, sal hierdie eenvoudige VLOOKUP-formule sonder probleme werk:
=VLOOKUP(B1, A5:B11, 2, FALSE)
Sodra jy egter die kolomme in die opsoektabel omruil, is hierdie sal onmiddellik die #N/A-fout tot gevolg hê:
Om 'n opsoek aan die linkerkant te hanteer, benodig jy 'n meer veelsydige funksie wat nie regtig omgee waar die terugkeerkolom is nie . Een van moontlike oplossings is om 'n kombinasie van INDEX- en MATCH-funksies te gebruik. Nog 'n benadering is die gebruik van OFFSET, MATCH en RYE:
OFFSET( lookup_table , MATCH( lookup_value , OFFSET( lookup_table , 0, lookup_col_offset , RYE( soektabel ), 1) ,0) -1, return_col_offset , 1, 1)Waar:
- Opsoek_kol_verskuiwing - is die aantal kolomme om van die beginpunt na die opsoekkolom te skuif.
- Terugkolom_afset - is die aantal kolomme om van die beginpunt na die terugkeer te skuif kolom.
In ons voorbeeld is die opsoektabel A5:B9 en die opsoekwaarde is in sel B1, die opsoekkolomverskuiwing is 1 (omdat ons soek na die opsoekwaarde in die tweede kolom (B) ), ons moet 1 kolom na regs skuif vanaf die begin van die tabel), die terugkeerkolomverskuiwing is 0, want ons gee waardes van die eerste af