Содржина
Во ова упатство, ќе фрлиме малку светлина на еден од најмистериозните жители на универзумот Excel - функцијата OFFSET.
Значи, што е OFFSET во Excel? Накратко, формулата OFFSET враќа референца до опсег што е поместен од почетна ќелија или опсег на ќелии со одреден број редови и колони.
Функцијата OFFSET може да биде малку незгодна за да се добие , па ајде прво да разгледаме кратко техничко објаснување (ќе се потрудам да биде едноставно), а потоа ќе опфатиме неколку од најефикасните начини за користење OFFSET во Excel.
Excel OFFSET функција - синтакса и основни употреби
Функцијата OFFSET во Excel враќа ќелија или опсег на ќелии што е даден број на редови и колони од дадена ќелија или опсег.
Синтаксата на функцијата OFFSET е следна:
OFFSET(референца, редови, колони, [висина], [ширина])Првите 3 аргументи се потребни, а последните 2 се опционални. Сите аргументи може да бидат референци за други ќелии или резултати вратени со други формули.
Изгледа дека Microsoft направи добар напор да стави одредено значење во имињата на параметрите и тие даваат навестување за тоа што вие треба да се специфицираат во секоја од нив.
Потребни аргументи:
- Референца - ќелија или опсег на соседни ќелии од кои го базирате поместувањето. Можете да го замислите како почетна точка.
- Редови - Бројот на редовиколона (А):
=OFFSET(A5:B9, MATCH(B1, OFFSET(A5:B9, 0, 1, ROWS(A5:B9), 1) ,0) -1, 0, 1, 1)
Знам дека формулата изгледа малку несмасна, но функционира :)
Пример 2 . Ако треба да го скенирате горниот ред за совпаѓања, формулата OFFSET MATCH може повторно да помогне, но овој пат ќе мора да ја подобрите со функцијата COLUMNS, како ова: OFFSET( tookup_table , повратен_ред_поместување , MATCH( побарувачка_вредност , OFFSET( табела_пребарување , поместување_ред_побарување , 0, 1, COLUMNS( табела_пребарување_2) , 0) -1, 1, 1)
Каде:
- Lookup_row_offset - бројот на редови што треба да се преместат од почетната точка до редот за пребарување.
- Return_row_offset - бројот на редови што треба да се преместат од почетната точка до повратниот ред.
Претпоставувајќи дека табелата за пребарување е B4:F5 и вредноста за пребарување е во ќелијата B1, формулата оди на следниов начин:
=OFFSET(B4:F5, 0, MATCH(B1, OFFSET(B4:F5, 1, 0, 1, COLUMNS(B4:F5)), 0) -1, 1, 1)
Во нашиот случај, поместувањето на редот за пребарување е 1 бидејќи нашиот опсег на пребарување е 1 ред подолу од почетната точка, поместувањето на повратниот ред е 0 затоа што враќаме совпаѓања од првиот ред во табелата.
Пример 3. Двонасочно пребарување (по вредности на колони и редови)
Двонасочно пребарување враќа вредност врз основа на совпаѓањата и во редовите и во колоните. И можете да го користите следновоФормула за низа со двојно пребарување за да се најде вредност на пресекот на одредена редица и колона:
=OFFSET( табела за пребарување , MATCH( вредност за пребарување на редови , OFFSET( табела за пребарување , 0, 0, ROWS( табела за пребарување ), 1), 0) -1, MATCH( вредност за пребарување на колона , OFFSET( табела за пребарување , 0, 0, 1, COLUMNS( табела за пребарување )), 0) -1)Со оглед на тоа:
- Табелата за пребарување е A5:G9
- Вредноста за совпаѓање на редовите е во B2
- Вредноста што треба да се совпадне на колоните е во B1
Ја добивате следнава дводимензионална формула за пребарување:
=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)
Не е најлесната работа за паметење, нели? Покрај тоа, ова е формула за низа, затоа не заборавајте да притиснете Ctrl + Shift + Enter за правилно да ја внесете.
Се разбира, оваа долга формула OFFSET не е единствениот можен начин да се направи двојно пребарување во Excel. Можете да го добиете истиот резултат со користење на VLOOKUP & засилувач; MATCH функции, SUMPRODUCT или INDEX & засилувач; НАТПРЕВАР. Постои дури и начин без формула - да се користат именувани опсези и операторот на пресекот (простор). Следното упатство детално ги објаснува сите алтернативни решенија: Како да направите двонасочно пребарување во Excel.
Функција OFFSET - ограничувања и алтернативи
Се надеваме дека примерите на формулата на оваа страница фрлија некои светлина за тоа како да се користи OFFSET во Excel. Меѓутоа, за ефикасно да ја искористите функцијата во вашите сопствени работни книги, не само што треба да бидетезнаејќи ги нејзините силни страни, но исто така бидете внимателни со неговите слабости.
Најкритичните ограничувања на функцијата Excel OFFSET се следните:
- Како и другите испарливи функции, OFFSET е функција гладна за ресурси . Секогаш кога има каква било промена во изворните податоци, вашите формули OFFSET повторно се пресметуваат, со што Excel останува зафатен малку подолго. Ова не е проблем за една формула во мала табела. Но, ако има десетици или стотици формули во работната книга, на Microsoft Excel може да му треба доста време за повторно пресметување.
- Формулите на Excel OFFSET тешко се прегледуваат . Бидејќи референците вратени од функцијата OFFSET се динамични, големите формули (особено со вгнездени OFFSET) може да бидат прилично незгодни за отстранување грешки.
Алтернативи за користење OFFSET во Excel
Како што често е случај во Excel, истиот резултат може да се постигне на повеќе различни начини. Значи, еве три елегантни алтернативи на OFFSET.
- Excel табели
Од Excel 2002 година, имаме навистина прекрасна карактеристика - целосно оформени Excel табели, наспроти вообичаени опсези. За да направите табела од структурирани податоци, едноставно кликнете Вметни > Табела на јазичето Дома или притиснете Ctrl + T .
Со внесување формула во една ќелија во табелата на Excel, можете да креирате таканаречена „пресметана колона“ која автоматски ја копира формулата во сите други ќелии во таа колона и ја прилагодуваформула за секој ред во табелата.
Покрај тоа, секоја формула што се однесува на податоците од табелата автоматски се прилагодува за да ги вклучи сите нови редови што ќе ги додадете во табелата или да ги исклучи редовите што ги бришете. Технички, таквите формули работат на колони или редови на табели, кои се по природа динамички опсези . Секоја табела во работната книга има уникатно име (стандардните се Табела1, Табела2 итн.) и можете слободно да ја преименувате вашата табела преку картичката Дизајн > Својства групата > ; Име на табела текстуално поле.
Следната слика од екранот ја прикажува формулата СУМ што се однесува на колоната Бонус од Табела3. Обрнете внимание дека формулата го вклучува името на колоната на табелата наместо опсег на ќелии.
Исто така види: Табели на Excel: додадете наслов, приспособете ја оската на графиконот, легендите и етикетите за податоци - Функција Excel INDEX
Иако не на ист начин како OFFSET, Excel INDEX може да се користи и за креирање референци за динамички опсег. За разлика од OFFSET, функцијата INDEX не е испарлива, така што нема да го забави вашиот Excel.
- Excel INDIRECT функција
Користејќи ја функцијата INDIRECT можете да креирате динамичен опсег референци од многу извори како што се вредностите на ќелиите, вредностите на ќелиите и текстот, именувани опсези. Исто така, може динамички да се однесува на друг лист или работна книга на Excel. Можете да ги најдете сите овие примери на формула во нашето упатство за функцијата Excel INDIRECT.
Дали се сеќавате на прашањето поставено на почетокот на овој туторијал - Што е OFFSET во Excel? Се надевам дека сега го знаете одговорот :) Ако сакате повеќе практично искуство, слободно преземете ја нашата работна книга за вежбање (видете подолу) која ги содржи сите формули дискутирани за ова страница и обратно инженерирајте ги за подлабоко разбирање. Ви благодариме што прочитавте!
Вежбајте работна книга за преземање
Примери на формулата OFFSET (датотека .xlsx)
да се движите од почетната точка, нагоре или надолу. Ако редовите се позитивен број, формулата се движи под почетната референца, во случај на негативен број оди над почетната референца. - Cols - Бројот на колони што ја сакате формулата да се помести од почетната точка. Како и редовите, колоните можат да бидат позитивни (десно од почетната референца) или негативни (лево од почетната референца).
Изборни аргументи:
- Висина - бројот на редови што треба да се вратат.
- Ширина - бројот на колони што треба да се вратат.
И висината и Аргументите за ширина мора секогаш да бидат позитивни броеви. Ако било кое е испуштено, стандардно е висината или ширината на референца .
Забелешка. OFFSET е испарлива функција и може да го забави вашиот работен лист. Бавноста е директно пропорционална со бројот на повторно пресметани ќелии.
И сега, ајде да ја илустрираме теоријата со пример за наједноставната формула OFFSET.
Пример на формулата на Excel OFFSET
Еве пример за едноставна формула OFFSET која враќа референца на ќелија врз основа на почетна точка, редови и колони што ги наведовте:
=OFFSET(A1,3,1)
Формулата му кажува на Excel да ја земе ќелијата A1 како почетна точка (референца), потоа поместете 3 реда надолу (аргумент за редови) и 1 колона налево (аргумент за колони). Како резултат на тоа, оваа формула OFFSET ја враќа вредноста во ќелијата B4.
Сликата левоја прикажува маршрутата на функцијата и скриншот на десната страна покажува како можете да ја користите формулата OFFSET за реални податоци. Единствената разлика помеѓу двете формули е тоа што втората (десно) вклучува референца на ќелијата (E1) во аргументот на редови. Но, бидејќи ќелијата Е1 го содржи бројот 3, и точно истиот број се појавува во аргументот на редовите од првата формула, и двете ќе вратат идентичен резултат - вредноста во B4.
Формули на Excel OFFSET - работи што треба да се запамети
- Функцијата OFFSET е Excel всушност не поместува ниедна ќелија или опсег, туку само враќа референца.
- Кога формулата OFFSET враќа опсег од ќелии, редовите и аргументите колони секогаш се однесуваат на горната лева ќелија во вратениот бес.
- Референтниот аргумент мора да вклучува ќелија или опсег на соседни ќелии, инаку вашата формула ќе ја врати #VALUE! грешка.
- Ако наведените редови и/или колони поместат референца преку работ на табелата, вашата формула Excel OFFSET ќе го врати #REF! грешка.
- Функцијата OFFSET може да се користи во која било друга функција на Excel што прифаќа референца ќелија / опсег во нејзините аргументи.
На пример, ако се обидете да ја користите формулата =OFFSET(A1,3,1,1,3)
сама по себе ќе фрли #ВРЕДНОСТ! грешка, бидејќи опсегот за враќање (1 ред, 3 колони) не се вклопува во една единствена ќелија. Меѓутоа, ако го вградите во функцијата SUM, какоова:
=SUM(OFFSET(A1,3,1,1,3))
Формулата ќе го врати збирот на вредности во опсег од 1 ред по 3 колони што е 3 реда подолу и 1 колона десно од ќелијата A1, т.е. вкупни вредности во ќелиите B4:D4.
Зошто користам OFFSET во Excel?
Сега кога знаете што прави функцијата OFFSET, можете да запрашајте се „Зошто да се мачите да го користите? Зошто едноставно да не напишете директна референца како B4:D4?
Формулата Excel OFFSET е многу добра за:
Креирање динамички опсези : Референците како B1:C4 се статични , што значи дека тие секогаш се однесуваат на даден опсег. Но, некои задачи се полесни за извршување со динамички опсези. Ова е особено случај кога работите со менување податоци, на пр. имате работен лист каде секоја недела се додава нов ред или колона.
Добивање на опсегот од почетната ќелија . Понекогаш, можеби не ја знаете вистинската адреса на опсегот, иако знаете дека започнува од одредена ќелија. Во такви сценарија, користењето OFFSET во Excel е вистинскиот начин.
Како да ја користите функцијата OFFSET во Excel - примери на формули
Се надевам дека не ви е здодевно со толку многу теорија . Како и да е, сега доаѓаме до највозбудливиот дел - практичната употреба на функцијата OFFSET.
Excel OFFSET и SUM функции
Примерот што го дискутиравме пред малку ја демонстрира наједноставната употреба на OFFSET & ; СУМ. Сега, ајде да ги погледнеме овие функции од друг агол и да видиме штодруго можат да прават.
Пример 1. Динамична формула SUM / OFFSET
Кога работите со постојано ажурирани работни листови, можеби ќе сакате да имате формула SUM која автоматски ги избира сите новододадени редови.
Да претпоставиме дека ги имате изворните податоци слични на она што го гледате на сликата од екранот подолу. Секој месец се додава нов ред веднаш над формулата SUM, и природно, сакате да го вклучите во вкупниот број. Во целина, постојат два избора - или ажурирајте го опсегот во формулата SUM секој пат рачно или формулата OFFSET нека го направи ова за вас.
Од првата ќелија на опсегот до сума ќе биде наведен директно во формулата SUM, само треба да одлучите за параметрите за функцијата Excel OFFSET, која ќе ја добие последната ќелија од опсегот:
-
Reference
- ќелијата што го содржи вкупниот број, B9 во нашиот случај. -
Rows
- ќелијата веднаш над вкупниот број, што бара негативниот број -1. -
Cols
- тоа е 0 затоа што не сакате да се промените колоната.
Значи, тука оди шемата на формулата SUM / OFFSET:
=SUM( прва ќелија:(OFFSET( ќелија со вкупно, -1,0)Прилагодена за горенаведениот пример, формулата изгледа вака:
=SUM(B2:(OFFSET(B9, -1, 0)))
И како што е прикажано на сликата подолу од екранот, таа работи беспрекорно:
Пример 2. Формула Excel OFFSET за сумирање на последните N редови
Во горниот пример, да претпоставиме дека сакате да го знаете износот на бонуси запоследните N месеци наместо вкупниот износ. Исто така, сакате формулата автоматски да ги вклучува сите нови редови што ги додавате на листот.
За оваа задача, ќе користиме Excel OFFSET во комбинација со функциите SUM и COUNT / COUNTA:
=SUM(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))
или
=SUM(OFFSET(B1,COUNTA(B:B)-E1,0,E1,1))
Следните детали можат да ви помогнат подобро да ги разберете формулите:
-
Reference
- заглавието на колоната чии вредности сакате да ги сумирате, ќелијата B1 во овој пример. -
Rows
- за да го пресметате бројот на редови што треба да се поместат, ја користите функцијата COUNT или COUNTA.COUNT го враќа бројот на ќелии во колоната Б кои содржат броеви, од кои ги одземате последните N месеци (бројот е ќелијата E1) и додадете 1.
Ако COUNTA е вашата функција на избор, не треба да додавате 1, бидејќи оваа функција ги брои сите непразни ќелии, а редот за заглавие со текстуална вредност додава дополнителна ќелија што и е потребна на нашата формула. Имајте предвид дека оваа формула ќе работи правилно само на слична структура на табела - еден ред за заглавие проследен со редови со броеви. За различни распореди на табели, можеби ќе треба да направите некои прилагодувања во формулата OFFSET/COUNTA.
-
Cols
- бројот на колони за поместување е нула (0). -
Height
- бројот на редови до сума е наведен во E1. -
Width
- 1 колона.
Користење на функцијата OFFSET со AVERAGE, MAX, MIN
На ист начин како што ги пресметавме бонусите за последните N месеци, можетеда се добие просек од последните N дена, недели или години, како и да се најдат нивните максимални или минимални вредности. Единствената разлика помеѓу формулите е името на првата функција:
=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))
Клучот користа од овие формули во однос на вообичаените AVERAGE(B5:B8) или MAX(B5:B8) е тоа што нема да морате да ја ажурирате формулата секогаш кога вашата изворна табела ќе се ажурира. Без разлика колку нови редови се додадени или избришани во вашиот работен лист, формулите OFFSET секогаш ќе се однесуваат на наведениот број на последни (најниски) ќелии во колоната.
Формула Excel OFFSET за создавање динамичен опсег
Користена заедно со COUNTA, функцијата OFFSET може да ви помогне да направите динамичен опсег што може да се покаже корисен во многу сценарија, на пример, да креирате паѓачки списоци што автоматски се ажурираат.
Формулата OFFSET за динамички опсег е како што следува:
=OFFSET(Sheet_Name!$A$1, 0, 0, COUNTA(Sheet_Name!$A:$A), 1)
Во срцето на оваа формула, ја користите функцијата COUNTA за да го добиете бројот на непразни ќелии во целната колона. Таа бројка оди во аргументот за висина на OFFSET и му наложува колку редови да врати.
Покрај тоа, тоа е редовна формула за Offset, каде што:
- Референца е почетната точка од која го засновате поместувањето, на пример Sheet1!$A$1.
- Редите и
Cols
се и 0 бидејќи нема колони или редови за поместување. - Ширина е 1 колона.
Забелешка. Ако степравејќи динамичен опсег во тековниот лист, нема потреба да го вклучите името на листот во референците, Excel ќе го направи тоа за вас автоматски кога ќе го креирате именуваниот опсег. Во спротивно, не заборавајте да го вклучите името на листот проследено со извичникот како во овој пример со формула.
Откако ќе креирате динамички именуван опсег со горенаведената формула OFFSET, можете да ја користите валидацијата на податоци за да направите динамична паѓачка листа што ќе се ажурира автоматски веднаш штом ќе додадете или отстраните ставки од изворната листа.
За детални упатства чекор-по-чекор за креирање паѓачки списоци во Excel, проверете ги следните упатства:
- Креирање паѓачки списоци во Excel - статичен, динамичен, од друга работна книга
- Изработка на зависна паѓачка листа
Excel OFFSET & VLOOKUP
Како што сите знаат, едноставно вертикално и хоризонтално пребарување се вршат со функцијата VLOOKUP или HLOOKUP, соодветно. Сепак, овие функции имаат премногу ограничувања и често се сопнуваат во помоќни и сложени формули за пребарување. Значи, за да извршите пософистицирани пребарувања во вашите табели на Excel, треба да барате алтернативи како што се INDEX, MATCH и OFFSET.
Пример 1. Формула OFFSET за лево Vlookup во Excel
Едно од најпознатите ограничувања на функцијата VLOOKUP е неможноста да се погледне лево, што значи дека VLOOKUP може да врати само вредност надесно од колоната за пребарување.
Во нашата табела за пребарување примероци, постојат две колони - имиња на месеци (колона А) и бонуси (колона Б). Ако сакате да добиете бонус за одреден месец, оваа едноставна формула VLOOKUP ќе работи без проблем:
=VLOOKUP(B1, A5:B11, 2, FALSE)
Сепак, штом ќе ги замените колоните во табелата за пребарување, ова веднаш ќе резултира со #N/A грешка:
За да се справите со пребарувањето од левата страна, потребна ви е повеќе разновидна функција која навистина не се грижи каде се наоѓа повратната колона . Едно од можните решенија е користење на комбинација од INDEX и MATCH функции. Друг пристап е користење на OFFSET, MATCH и ROWS:
OFFSET( lookup_table , MATCH( lookup_value , OFFSET( lookup_table , 0, lookup_col_offset , ROWS( табела за пребарување ), 1) ,0) -1, return_col_offset , 1, 1)Каде:
- Lookup_col_offset - е бројот на колони што треба да се преместат од почетната точка до колоната за пребарување.
- Return_col_offset - е бројот на колони што треба да се движат од почетната точка до враќањето колона.
Во нашиот пример, табелата за пребарување е A5:B9 и вредноста за пребарување е во ќелијата B1, поместувањето на колоната за пребарување е 1 (бидејќи ја бараме вредноста за пребарување во втората колона (B ), треба да поместиме 1 колона надесно од почетокот на табелата), поместувањето на повратната колона е 0 затоа што враќаме вредности од првата