Funcția Excel OFFSET - exemple de formule și utilizări

  • Imparte Asta
Michael Brown

În acest tutorial, vom face puțină lumină asupra unuia dintre cei mai misterioși locuitori ai universului Excel - funcția OFFSET.

Deci, ce este OFFSET în Excel? Pe scurt, formula OFFSET returnează o referință la un interval care este decalat de la o celulă de pornire sau de la un interval de celule cu un număr specificat de rânduri și coloane.

Funcția OFFSET poate fi un pic mai complicată de înțeles, așa că haideți să trecem mai întâi printr-o scurtă explicație tehnică (voi face tot posibilul să o păstrez simplă) și apoi vom acoperi câteva dintre cele mai eficiente moduri de a utiliza OFFSET în Excel.

    Funcția Excel OFFSET - sintaxă și utilizări de bază

    Funcția OFFSET din Excel returnează o celulă sau un interval de celule care se află la un anumit număr de rânduri și coloane de la o celulă sau un interval dat.

    Sintaxa funcției OFFSET este următoarea:

    OFFSET(referință, rânduri, coloane, [înălțime], [lățime])

    Primele 3 argumente sunt obligatorii, iar ultimele 2 sunt opționale. Toate argumentele pot fi referințe la alte celule sau rezultate returnate de alte formule.

    Se pare că Microsoft a făcut un efort bun pentru a da o semnificație numelor parametrilor și oferă un indiciu cu privire la ceea ce ar trebui să specificați în fiecare dintre ei.

    Argumente necesare:

    • Referință - o celulă sau un interval de celule adiacente pe care se bazează decalajul. Puteți considera că este punctul de plecare.
    • Rânduri - Numărul de rânduri care trebuie deplasate de la punctul de plecare, în sus sau în jos. Dacă rows este un număr pozitiv, formula se deplasează sub referința de pornire, iar în cazul unui număr negativ, se deplasează deasupra referinței de pornire.
    • Cols - Numărul de coloane pe care doriți ca formula să se deplaseze de la punctul de pornire. La fel ca și rândurile, cols poate fi pozitiv (la dreapta referinței de pornire) sau negativ (la stânga referinței de pornire).

    Argumente opționale:

    • Înălțime - numărul de rânduri care trebuie returnate.
    • Lățime - numărul de coloane care trebuie returnate.

    Atât înălțimea, cât și lățimea trebuie să fie întotdeauna numere pozitive. În cazul în care oricare dintre ele este omisă, se utilizează în mod implicit înălțimea sau lățimea lui referință .

    Notă. OFFSET este o funcție volatilă și poate încetini foaia de calcul. Lentoarea este direct proporțională cu numărul de celule recalculate.

    Și acum, să ilustrăm teoria cu un exemplu al celei mai simple formule OFFSET.

    Excel OFFSET exemplu de formulă OFFSET

    Iată un exemplu de formulă OFFSET simplă care returnează o referință de celulă pe baza unui punct de plecare, a rândurilor și colilor pe care le specificați:

    =OFFSET(A1,3,1)

    Formula îi spune lui Excel să ia celula A1 ca punct de plecare (referință), apoi să se deplaseze 3 rânduri în jos (argumentul rows) și 1 coloană la stânga (argumentul cols). Ca rezultat, această formulă OFFSET returnează valoarea din celula B4.

    Imaginea din stânga arată traseul funcției, iar captura de ecran din dreapta demonstrează cum puteți utiliza formula OFFSET pe date reale. Singura diferență între cele două formule este că cea de-a doua (din dreapta) include o referință de celulă (E1) în argumentul rows. Dar, din moment ce celula E1 conține numărul 3, și exact același număr apare în argumentul rows al primei formule,ambele ar returna un rezultat identic - valoarea din B4.

    Formulele Excel OFFSET - lucruri de reținut

    • Funcția OFFSET din Excel nu deplasează de fapt nicio celulă sau interval, ci doar returnează o referință.
    • Atunci când o formulă OFFSET returnează un interval de celule, argumentele rows și cols se referă întotdeauna la celula din stânga-sus din intervalul returnat.
    • Argumentul de referință trebuie să includă o celulă sau un interval de celule adiacente, în caz contrar formula dvs. va returna eroarea #VALUE!
    • Dacă rândurile și/sau coloanele specificate mută o referință peste marginea foii de calcul, formula OFFSET din Excel va returna eroarea #REF!.
    • Funcția OFFSET poate fi utilizată în cadrul oricărei alte funcții Excel care acceptă o referință la o celulă/un interval în argumentele sale.

    De exemplu, dacă încercați să utilizați formula =OFFSET(A1,3,1,1,1,3) de unul singur, va arunca o eroare #VALUE!, deoarece un interval de returnat (1 rând, 3 coloane) nu se potrivește într-o singură celulă. Totuși, dacă îl încorporați în funcția SUM, astfel:

    =SUM(OFFSET(A1,3,1,1,3))

    Formula va returna suma valorilor dintr-un interval de 1 rând pe 3 coloane care se află 3 rânduri mai jos și 1 coloană la dreapta celulei A1, adică totalul valorilor din celulele B4:D4.

    De ce folosesc OFFSET în Excel?

    Acum că știți ce face funcția OFFSET, poate vă întrebați "De ce să vă deranjez să o folosiți?" De ce să nu scrieți pur și simplu o referință directă ca B4:D4?

    Formula OFFSET din Excel este foarte bună pentru:

    Crearea de intervale dinamice : Referințele de tipul B1:C4 sunt statice, ceea ce înseamnă că se referă întotdeauna la un anumit interval. Dar unele sarcini sunt mai ușor de realizat cu intervale dinamice. Acest lucru se întâmplă în special atunci când lucrați cu date în schimbare, de exemplu, dacă aveți o foaie de calcul în care un rând sau o coloană nouă este adăugată în fiecare săptămână.

    Obținerea intervalului de la celula de pornire Uneori, este posibil să nu cunoașteți adresa reală a intervalului, deși știți că acesta începe de la o anumită celulă. În astfel de scenarii, utilizarea OFFSET în Excel este cea mai bună soluție.

    Cum se utilizează funcția OFFSET în Excel - exemple de formule

    Sper că nu v-ați plictisit de atâta teorie. Oricum, acum ajungem la partea cea mai interesantă - utilizarea practică a funcției OFFSET.

    Funcțiile OFFSET și SUM din Excel

    Exemplul pe care l-am discutat cu puțin timp în urmă demonstrează cea mai simplă utilizare a OFFSET & SUM. Acum, să privim aceste funcții dintr-un alt unghi și să vedem ce mai pot face.

    Exemplul 1. O formulă dinamică SUM / OFFSET

    Atunci când lucrați cu foi de calcul actualizate continuu, este posibil să doriți să aveți o formulă SUM care să selecteze automat toate rândurile nou adăugate.

    Să presupunem că aveți date sursă similare cu ceea ce vedeți în captura de ecran de mai jos. În fiecare lună, un nou rând este adăugat chiar deasupra formulei SUM și, în mod natural, doriți ca acesta să fie inclus în total. În general, există două opțiuni - fie actualizați manual intervalul din formula SUM de fiecare dată, fie cereți formulei OFFSET să facă acest lucru pentru dvs.

    Deoarece prima celulă din intervalul de adunat va fi specificată direct în formula SUM, trebuie doar să decideți parametrii pentru funcția Excel OFFSET, care va obține ultima celulă din interval:

    • Referință - celula care conține totalul, B9 în cazul nostru.
    • Rânduri - celula situată chiar deasupra totalului, care necesită numărul negativ -1.
    • Cols - este 0, deoarece nu doriți să modificați coloana.

    Deci, iată modelul formulei SUM / OFFSET:

    =SUMĂ( prima celulă :(OFFSET( celulă cu un total de , -1,0)

    Modificată pentru exemplul de mai sus, formula arată după cum urmează:

    =SUMA(B2:(OFFSET(B9, -1, 0)))

    Și, după cum se demonstrează în captura de ecran de mai jos, funcționează fără probleme:

    Exemplul 2. Formula Excel OFFSET pentru însumarea ultimelor N rânduri

    În exemplul de mai sus, să presupunem că doriți să cunoașteți suma bonusurilor pentru ultimele N luni, mai degrabă decât totalul general. De asemenea, doriți ca formula să includă automat orice rând nou pe care îl adăugați în foaie.

    Pentru această sarcină, vom utiliza Excel OFFSET în combinație cu funcțiile SUM și COUNT / COUNTA:

    =SUMA(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))

    sau

    =SUMA(OFFSET(B1,COUNTA(B:B)-E1,0,E1,1))

    Următoarele detalii vă pot ajuta să înțelegeți mai bine formulele:

    • Referință - antetul coloanei ale cărei valori doriți să le însumați, celula B1 în acest exemplu.
    • Rânduri - pentru a calcula numărul de rânduri care trebuie compensate, utilizați fie funcția COUNT, fie COUNTA.

      COUNT returnează numărul de celule din coloana B care conțin numere, din care se scad ultimele N luni (numărul este celula E1) și se adaugă 1.

      Dacă COUNTA este funcția aleasă, nu este nevoie să adăugați 1, deoarece această funcție numără toate celulele care nu sunt goale, iar un rând de antet cu o valoare de text adaugă o celulă în plus de care formula noastră are nevoie. Rețineți că această formulă va funcționa corect numai pe o structură similară a tabelului - un rând de antet urmat de rânduri cu numere. Pentru diferite configurații de tabel, este posibil să fie nevoie să faceți unele ajustări înFormula OFFSET/COUNTA.

    • Cols - numărul de coloane de decalat este zero (0).
    • Înălțime - numărul de rânduri de însumat este specificat în E1.
    • Lățime - 1 coloană.

    Utilizarea funcției OFFSET cu AVERAGE, MAX, MIN

    În același mod în care am calculat bonusurile pentru ultimele N luni, puteți obține o medie a ultimelor N zile, săptămâni sau ani, precum și să găsiți valorile maxime sau minime ale acestora. Singura diferență între formule este numele primei funcții:

    =MEDIA(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))

    Principalul beneficiu al acestor formule față de formulele obișnuite AVERAGE(B5:B8) sau MAX(B5:B8) este că nu va trebui să actualizați formula de fiecare dată când tabelul sursă este actualizat. Indiferent de câte rânduri noi sunt adăugate sau șterse în foaia de calcul, formulele OFFSET se vor referi întotdeauna la numărul specificat de ultime celule (cele mai de jos) din coloană.

    Formula Excel OFFSET pentru a crea un interval dinamic

    Utilizată împreună cu COUNTA, funcția OFFSET vă poate ajuta să creați un interval dinamic care se poate dovedi util în multe scenarii, de exemplu pentru a crea liste derulante care pot fi actualizate automat.

    Formula OFFSET pentru o gamă dinamică este următoarea:

    =OFFSET(Nume_foaie!$A$1, 0, 0, 0, COUNTA(Nume_foaie!$A:$A), 1)

    În centrul acestei formule, utilizați funcția COUNTA pentru a obține numărul de celule care nu sunt goale din coloana țintă. Acest număr este introdus în argumentul de înălțime al funcției OFFSET, care îi spune câte rânduri să returneze.

    În afară de asta, este o formulă obișnuită de compensare, în care:

    • Referință este punctul de plecare de la care se bazează decalajul, de exemplu Sheet1!$A$1.
    • Rânduri și Cols sunt amândouă 0, deoarece nu există coloane sau rânduri de compensat.
    • Lățime este de o coloană.

    Notă. Dacă creați un interval dinamic în foaia curentă, nu este necesar să includeți numele foii în referințe, Excel o va face automat atunci când creați intervalul numit. În caz contrar, asigurați-vă că includeți numele foii urmat de semnul exclamării, ca în acest exemplu de formulă.

    După ce ați creat un interval dinamic numit cu formula OFFSET de mai sus, puteți utiliza validarea datelor pentru a crea o listă dinamică derulantă care se va actualiza automat imediat ce adăugați sau eliminați elemente din lista sursă.

    Pentru îndrumări detaliate, pas cu pas, privind crearea de liste derulante în Excel, vă rugăm să consultați următoarele tutoriale:

    • Crearea de liste derulante în Excel - statice, dinamice, din alt registru de lucru
    • Realizarea unei liste derulante dependente

    Excel OFFSET & VLOOKUP

    După cum știe toată lumea, căutările verticale și orizontale simple sunt efectuate cu funcția VLOOKUP, respectiv HLOOKUP. Cu toate acestea, aceste funcții au prea multe limitări și se împiedică adesea în formule de căutare mai puternice și mai complexe. Astfel, pentru a efectua căutări mai sofisticate în tabelele Excel, trebuie să căutați alternative, cum ar fi INDEX, MATCH și OFFSET.

    Exemplul 1. Formula OFFSET pentru un Vlookup stânga în Excel

    Una dintre cele mai cunoscute limitări ale funcției VLOOKUP este incapacitatea de a se uita în stânga sa, ceea ce înseamnă că VLOOKUP poate returna doar o valoare din dreapta coloanei de căutare.

    În exemplul nostru de tabel de căutare, există două coloane - nume de luni (coloana A) și bonusuri (coloana B). Dacă doriți să obțineți un bonus pentru o anumită lună, această simplă formulă VLOOKUP va funcționa fără probleme:

    =VLOOKUP(B1, A5:B11, 2, FALSE)

    Cu toate acestea, de îndată ce schimbați coloanele din tabelul de căutare, se va produce imediat eroarea #N/A:

    Pentru a gestiona o căutare pe partea stângă, aveți nevoie de o funcție mai versatilă, care să nu se preocupe cu adevărat de locul în care se află coloana de retur. Una dintre soluțiile posibile este utilizarea unei combinații a funcțiilor INDEX și MATCH. O altă abordare este utilizarea OFFSET, MATCH și ROWS:

    OFFSET( lookup_table , MATCH( lookup_value , OFFSET( lookup_table , 0, lookup_col_offset , ROWS( lookup_table ), 1) ,0) -1, return_col_offset , 1, 1)

    Unde:

    • Lookup_col_offset - este numărul de coloane care trebuie deplasate de la punctul de plecare la coloana de căutare.
    • Return_col_offset - este numărul de coloane care trebuie deplasate de la punctul de plecare până la coloana de întoarcere.

    În exemplul nostru, tabelul de căutare este A5:B9 și valoarea de căutare este în celula B1, decalajul coloanei de căutare este 1 (deoarece căutăm valoarea de căutare în a doua coloană (B), trebuie să ne deplasăm cu 1 coloană spre dreapta de la începutul tabelului), decalajul coloanei de returnare este 0 deoarece returnăm valori din prima coloană (A):

    =OFFSET(A5:B9, MATCH(B1, OFFSET(A5:B9, 0, 1, ROWS(A5:B9), 1) ,0) -1, 0, 1, 1, 1)

    Știu că formula pare un pic stângace, dar funcționează :)

    Exemplul 2. Cum se face o căutare superioară în Excel

    Ca și în cazul VLOOKUP, care nu poate privi în stânga, omologul său orizontal - funcția HLOOKUP - nu poate privi în sus pentru a returna o valoare.

    Dacă aveți nevoie să scanați un rând superior pentru a găsi corespondențe, formula OFFSET MATCH vă poate ajuta din nou, dar de data aceasta va trebui să o îmbunătățiți cu funcția COLUMNS, astfel:

    OFFSET( lookup_table , return_row_offset , MATCH( lookup_value , OFFSET( lookup_table , lookup_row_offset , 0, 1, COLOANE( lookup_table )), 0) -1, 1, 1)

    Unde:

    • Lookup_row_offset - numărul de rânduri care trebuie deplasate de la punctul de plecare la rândul de căutare.
    • Return_row_offset - numărul de rânduri care trebuie deplasate de la punctul de plecare până la rândul de întoarcere.

    Presupunând că tabelul de căutare este B4:F5 și că valoarea de căutare se află în celula B1, formula este următoarea:

    =OFFSET(B4:F5, 0, MATCH(B1, OFFSET(B4:F5, 1, 0, 1, COLUMNS(B4:F5)), 0) -1, 1, 1)

    În cazul nostru, decalajul rândului de căutare este 1, deoarece intervalul de căutare este un rând mai jos față de punctul de pornire, iar decalajul rândului de returnare este 0, deoarece returnăm corespondențe din primul rând din tabel.

    Exemplul 3. Căutare în două direcții (după valorile coloanelor și rândurilor)

    O căutare bidirecțională returnează o valoare pe baza potrivirii atât în rânduri, cât și în coloane. Și puteți utiliza următoarea formulă de matrice de căutare dublă pentru a găsi o valoare la intersecția dintre un anumit rând și o anumită coloană:

    =OFFSET( tabel de căutare , MATCH( valoarea de căutare a rândului , OFFSET( tabel de căutare , 0, 0, 0, ROWS( tabel de căutare ), 1), 0) -1, MATCH( valoarea de căutare a coloanei , OFFSET( tabel de căutare , 0, 0, 0, 1, COLOANE( tabel de căutare )), 0) -1)

    Având în vedere că:

    • Tabelul de căutare este A5:G9
    • Valoarea care trebuie să se potrivească pe rânduri este în B2
    • Valoarea care trebuie să se potrivească pe coloane este în B1

    Se obține următoarea formulă de căutare bidimensională:

    =OFFSET(A5:G9, MATCH(B2, OFFSET(A5:G9, 0, 0, 0, ROWS(A5:G9), 1), 0)-1, MATCH(B1, OFFSET(A5:G9, 0, 0, 0, 1, COLUMNS(A5:G9)), 0) -1)

    Nu este cel mai ușor de reținut, nu-i așa? În plus, aceasta este o formulă de matrice, așa că nu uitați să apăsați Ctrl + Shift + Enter pentru a o introduce corect.

    Bineînțeles, această lungă formulă OFFSET nu este singura modalitate posibilă de a face o dublă căutare în Excel. Puteți obține același rezultat folosind funcțiile VLOOKUP &; MATCH, SUMPRODUCT sau INDEX & MATCH. Există chiar și o modalitate fără formule - de a utiliza intervale numite și operatorul de intersecție (spațiu). Următorul tutorial explică toate soluțiile alternative în detaliu: Cum să faci două direcțiicăutare în Excel.

    Funcția OFFSET - limitări și alternative

    Sperăm că exemplele de formule de pe această pagină au făcut lumină în ceea ce privește modul de utilizare a OFFSET în Excel. Cu toate acestea, pentru a valorifica eficient funcția în propriile cărți de lucru, nu trebuie să cunoașteți doar punctele sale forte, ci și să vă feriți de punctele sale slabe.

    Cele mai importante limitări ale funcției OFFSET din Excel sunt următoarele:

    • Ca și alte funcții volatile, OFFSET este o funcție funcție care necesită resurse Ori de câte ori se produce o schimbare în datele sursă, formulele OFFSET sunt recalculate, ceea ce ține Excel ocupat pentru mai mult timp. Aceasta nu este o problemă pentru o singură formulă într-o foaie de calcul mică. Dar dacă există zeci sau sute de formule într-un registru de lucru, Microsoft Excel poate avea nevoie de ceva timp pentru a recalcula.
    • Formulele Excel OFFSET sunt greu de revizuit Deoarece referințele returnate de funcția OFFSET sunt dinamice, formulele mari (în special cele cu OFFSET-uri imbricate) pot fi destul de dificil de depanat.

    Alternative la utilizarea OFFSET în Excel

    Așa cum se întâmplă adesea în Excel, același rezultat poate fi obținut în mai multe moduri diferite. Așadar, iată trei alternative elegante la OFFSET.

    1. Tabele Excel

      Începând cu Excel 2002, dispunem de o caracteristică cu adevărat minunată - tabele Excel cu drepturi depline, spre deosebire de intervalele obișnuite. Pentru a crea un tabel din date structurate, trebuie doar să faceți clic pe Inserare> Tabel pe Acasă sau apăsați Ctrl + T .

      Introducând o formulă într-o celulă dintr-un tabel Excel, puteți crea o așa-numită "coloană calculată" care copiază automat formula în toate celelalte celule din acea coloană și ajustează formula pentru fiecare rând din tabel.

      Mai mult, orice formulă care se referă la datele unui tabel se ajustează automat pentru a include orice rânduri noi pe care le adăugați în tabel sau pentru a exclude rândurile pe care le ștergeți. Din punct de vedere tehnic, astfel de formule operează pe coloanele sau rândurile tabelului, care sunt intervale dinamice în natură. Fiecare tabel dintr-un registru de lucru are un nume unic (cele implicite sunt Table1, Table2 etc.) și sunteți liber să redenumiți tabelul prin intermediul funcției Design tab> Proprietăți grup> Nume tabel caseta de text.

      Următoarea captură de ecran demonstrează formula SUM care se referă la Bonus din tabelul 3. Vă rugăm să fiți atenți la faptul că formula include coloana tabelului numele coloanei mai degrabă decât un interval de celule.

    2. Funcția Excel INDEX

      Deși nu este exact în același mod ca OFFSET, Excel INDEX poate fi utilizat și pentru a crea referințe dinamice de interval. Spre deosebire de OFFSET, funcția INDEX nu este volatilă, deci nu va încetini Excel-ul.

    3. Funcția Excel INDIRECT

      Cu ajutorul funcției INDIRECT puteți crea referințe dinamice la intervale din mai multe surse, cum ar fi valori de celule, valori de celule și text, intervale numite. De asemenea, poate face referire dinamică la o altă foaie Excel sau registru de lucru. Puteți găsi toate aceste exemple de formule în tutorialul nostru despre funcția INDIRECT din Excel.

    Vă amintiți întrebarea pusă la începutul acestui tutorial - Ce este OFFSET în Excel? Sper că acum știți răspunsul : ) Dacă doriți mai multă experiență practică, nu ezitați să descărcați caietul nostru de practică (a se vedea mai jos) care conține toate formulele discutate pe această pagină și să le faceți inginerie inversă pentru o înțelegere mai profundă. Vă mulțumim pentru lectură!

    Caietul de practică pentru descărcare

    Exemple de formule OFFSET (fișier .xlsx)

    Michael Brown este un pasionat de tehnologie dedicat, cu o pasiune pentru simplificarea proceselor complexe folosind instrumente software. Cu mai mult de un deceniu de experiență în industria tehnologiei, el și-a perfecționat abilitățile în Microsoft Excel și Outlook, precum și în Google Sheets și Docs. Blogul lui Michael este dedicat împărtășirii cunoștințelor și experienței sale cu alții, oferind sfaturi și tutoriale ușor de urmat pentru îmbunătățirea productivității și eficienței. Indiferent dacă sunteți un profesionist experimentat sau un începător, blogul lui Michael oferă informații valoroase și sfaturi practice pentru a profita la maximum de aceste instrumente software esențiale.