Функция OFFSET на Excel - примери за формули и приложения

  • Споделя Това
Michael Brown

В този урок ще хвърлим малко светлина върху един от най-загадъчните обитатели на вселената на Excel - функцията OFFSET.

И така, какво е OFFSET в Excel? Накратко, формулата OFFSET връща препратка към диапазон, който е изместен от начална клетка или диапазон от клетки с определен брой редове и колони.

Функцията OFFSET може да се окаже малко сложна за разбиране, затова нека първо да направим кратко техническо обяснение (ще се постарая да го опростя), а след това ще разгледаме няколко от най-ефективните начини за използване на OFFSET в Excel.

    Функция OFFSET на Excel - синтаксис и основни приложения

    Функцията OFFSET в Excel връща клетка или диапазон от клетки, които се намират на определен брой редове и колони от дадена клетка или диапазон.

    Синтаксисът на функцията OFFSET е следният:

    OFFSET(референция, редове, колони, [височина], [ширина])

    Първите 3 аргумента са задължителни, а последните 2 не са задължителни. Всички аргументи могат да бъдат препратки към други клетки или резултати, върнати от други формули.

    Изглежда, че Microsoft се е постарала да придаде известно значение на имената на параметрите и те подсказват какво трябва да посочите във всеки от тях.

    Необходими аргументи:

    • Справка - клетка или диапазон от съседни клетки, от които се изчислява отместването. Можете да си го представите като начална точка.
    • Редове - Броят на редовете, които ще се преместят от началната точка нагоре или надолу. Ако rows е положително число, формулата се премества под началната референция, а в случай на отрицателно число - над началната референция.
    • Колс - Броят на колоните, които искате формулата да премести от началната точка. Освен редове, колоните могат да бъдат положителни (вдясно от началната референция) или отрицателни (вляво от началната референция).

    Незадължителни аргументи:

    • Височина - броя на редовете, които да бъдат върнати.
    • Ширина - броя на колоните, които да бъдат върнати.

    И двата аргумента за височина и ширина трябва винаги да са положителни числа. Ако някой от тях е пропуснат, по подразбиране се използва височината или ширината на справка .

    Бележка: OFFSET е нестабилна функция и може да забави работния ви лист. Забавянето е правопропорционално на броя на преизчислените клетки.

    А сега нека илюстрираме теорията с пример за най-простата формула OFFSET.

    Пример за формулата OFFSET на Excel

    Ето един пример за проста формула OFFSET, която връща референция към клетка въз основа на начална точка, редове и колони, които сте задали:

    =OFFSET(A1,3,1)

    Формулата указва на Excel да вземе клетка A1 като начална точка (референция), след което да се премести 3 реда надолу (аргумент rows) и 1 колона наляво (аргумент cols). В резултат на това тази формула OFFSET връща стойността в клетка B4.

    Изображението вляво показва маршрута на функцията, а снимката вдясно демонстрира как можете да използвате формулата OFFSET върху данни от реалния живот. Единствената разлика между двете формули е, че втората (вдясно) включва препратка към клетка (E1) в аргумента rows. Но тъй като клетка E1 съдържа числото 3, и точно същото число се появява в аргумента rows на първата формула,и двете ще върнат идентичен резултат - стойността в B4.

    Формули OFFSET на Excel - неща, които трябва да запомните

    • Функцията OFFSET в Excel всъщност не премества клетки или диапазони, а само връща препратка.
    • Когато формула OFFSET връща диапазон от клетки, аргументите rows и cols винаги се отнасят до горната лява клетка във върнатия диапазон.
    • Аргументът за референция трябва да включва клетка или диапазон от съседни клетки, в противен случай формулата ви ще върне грешката #VALUE!.
    • Ако посочените редове и/или колони преместят референцията над ръба на електронната таблица, формулата OFFSET на Excel ще върне грешката #REF!.
    • Функцията OFFSET може да се използва в рамките на всяка друга функция на Excel, която приема в аргументите си препратка към клетка/обхват.

    Например, ако се опитате да използвате формулата =OFFSET(A1,3,1,1,3) сама по себе си, тя ще хвърли грешка #VALUE!, тъй като диапазонът за връщане (1 ред, 3 колони) не се побира в една клетка. Ако обаче я вградите във функцията SUM, както е показано тук:

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

    Формулата ще върне сумата на стойностите в диапазон от 1 ред на 3 колони, който се намира 3 реда под и 1 колона вдясно от клетка А1, т.е. сумата на стойностите в клетки B4:D4.

    Защо използвам OFFSET в Excel?

    Сега, след като знаете какво прави функцията OFFSET, може би се питате: "Защо да я използваме?" Защо просто не напишем директна препратка, например B4:D4?

    Формулата OFFSET на Excel е много добра за:

    Създаване на динамични диапазони : Препратки като B1:C4 са статични, което означава, че те винаги се отнасят до даден диапазон. Но някои задачи се изпълняват по-лесно с динамични диапазони. Това е особено важно, когато работите с променящи се данни, например имате работен лист, в който всяка седмица се добавя нов ред или колона.

    Получаване на обхвата от началната клетка Понякога може да не знаете действителния адрес на диапазона, въпреки че знаете, че той започва от определена клетка. В такива случаи използването на OFFSET в Excel е правилният начин.

    Как да използвате функцията OFFSET в Excel - примери за формули

    Надявам се, че не сте се отегчили от толкова много теория. Както и да е, сега стигаме до най-вълнуващата част - практическото използване на функцията OFFSET.

    Функции OFFSET и SUM в Excel

    Примерът, който разгледахме преди малко, демонстрира най-простото използване на OFFSET & SUM. Сега нека разгледаме тези функции от друг ъгъл и да видим какво още могат да правят.

    Пример 1. Динамична формула SUM / OFFSET

    Когато работите с непрекъснато актуализирани работни листове, може да искате да имате формула SUM, която автоматично избира всички новодобавени редове.

    Да предположим, че имате изходни данни, подобни на тези, които виждате на скрийншота по-долу. Всеки месец се добавя нов ред точно над формулата SUM и естествено искате да го включите в общата сума. Като цяло има два варианта - или да актуализирате обхвата във формулата SUM всеки път ръчно, или да накарате формулата OFFSET да направи това вместо вас.

    Тъй като първата клетка от диапазона за сумиране ще бъде зададена директно във формулата SUM, трябва само да определите параметрите за функцията Excel OFFSET, която ще получи последната клетка от диапазона:

    • Справка - клетката, съдържаща общия брой, в нашия случай B9.
    • Редове - клетката точно над общия брой, която изисква отрицателното число -1.
    • Колс - е 0, защото не искате да променяте колоната.

    Ето и модела на формулата SUM / OFFSET:

    =SUM( първа клетка :(OFFSET( клетка с общо , -1,0)

    В горния пример формулата е променена по следния начин:

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

    И както е показано на снимката по-долу, тя работи безупречно:

    Пример 2. Excel OFFSET формула за сумиране на последните N реда

    В горния пример, да предположим, че искате да знаете сумата на бонусите за последните N месеца, а не общата сума. Също така искате формулата автоматично да включва всички нови редове, които добавяте в листа.

    За тази задача ще използваме функцията OFFSET на Excel в комбинация с функциите SUM и COUNT / COUNTA:

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

    или

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

    Следните подробности могат да ви помогнат да разберете по-добре формулите:

    • Справка - заглавието на колоната, чиито стойности искате да обобщите, клетка B1 в този пример.
    • Редове - за да изчислите броя на редовете, които трябва да се компенсират, използвайте функцията COUNT или COUNTA.

      COUNT връща броя на клетките в колона B, които съдържат числа, от които се изваждат последните N месеца (числото е в клетка E1) и се добавя 1.

      Ако сте избрали функцията COUNTA, не е необходимо да добавяте 1, тъй като тази функция брои всички непразни клетки, а заглавният ред с текстова стойност добавя допълнителна клетка, от която се нуждае нашата формула. Моля, обърнете внимание, че тази формула ще работи правилно само при подобна структура на таблицата - един заглавен ред, последван от редове с числа. За различни оформления на таблицата може да се наложи да направите някои корекции вФормула OFFSET/COUNTA.

    • Колс - броят на колоните за отместване е нула (0).
    • Височина - броят на редовете, които ще се сумират, е посочен в E1.
    • Ширина - 1 колона.

    Използване на функцията OFFSET с AVERAGE, MAX, MIN

    По същия начин, по който изчислихме бонусите за последните N месеца, можете да получите средна стойност за последните N дни, седмици или години, както и да намерите техните максимални или минимални стойности. Единствената разлика между формулите е името на първата функция:

    =СРЕДНА СТОЙНОСТ(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 винаги ще се отнасят до определения брой последни (най-долните) клетки в колоната.

    Формула OFFSET на Excel за създаване на динамичен диапазон

    Функцията OFFSET, използвана в комбинация с COUNTA, може да ви помогне да създадете динамичен диапазон, който може да се окаже полезен в много сценарии, например за създаване на автоматично обновяващи се падащи списъци.

    Формулата OFFSET за динамичен обхват е следната:

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

    В основата на тази формула се използва функцията COUNTA, за да се получи броят на непразните клетки в целевата колона. Това число се предава на аргумента за височина на OFFSET, като му се указва колко реда да върне.

    Освен това това е обикновена формула за офсет, в която:

    • Справка е началната точка, от която се изчислява отместването, например Sheet1!$A$1.
    • Редове и Колс са 0, тъй като няма колони или редове, които да се компенсират.
    • Ширина е 1 колона.

    Забележка. Ако създавате динамичен диапазон в текущия лист, не е необходимо да включвате името на листа в препратките, Excel ще го направи автоматично при създаването на именувания диапазон. В противен случай не забравяйте да включите името на листа, последвано от възклицателен знак, както в този пример за формула.

    След като сте създали динамичен именуван диапазон с горната формула OFFSET, можете да използвате Data Validation, за да създадете динамичен падащ списък, който ще се актуализира автоматично, щом добавите или премахнете елементи от изходния списък.

    За подробни указания стъпка по стъпка за създаване на падащи списъци в 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( lookup_table ), 1) ,0) -1, return_col_offset , 1, 1)

    Къде:

    • Lookup_col_offset - е броят на колоните, които трябва да се преместят от началната точка до колоната за търсене.
    • Return_col_offset - е броят на колоните, които трябва да се преместят от началната точка до обратната колона.

    В нашия пример таблицата за търсене е A5:B9 и стойността за търсене е в клетка B1, отместването на колоната за търсене е 1 (тъй като търсим стойността за търсене във втората колона (B), трябва да се преместим с 1 колона надясно от началото на таблицата), отместването на колоната за връщане е 0, тъй като връщаме стойности от първата колона (A):

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

    Знам, че формулата изглежда малко тромава, но работи :)

    Пример 2. Как да направите горна справка в Excel

    Както в случая с VLOOKUP, която не може да гледа наляво, нейният хоризонтален аналог - функцията HLOOKUP - не може да гледа нагоре, за да върне стойност.

    Ако трябва да сканирате горния ред за съвпадения, формулата OFFSET MATCH може да ви помогне отново, но този път ще трябва да я разширите с функцията COLUMNS, както следва:

    OFFSET( lookup_table , return_row_offset , MATCH( lookup_value , OFFSET( lookup_table , lookup_row_offset , 0, 1, КОЛОНИ( lookup_table )), 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, КОЛОНИ( таблица за търсене )), 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 & MATCH. Съществува дори начин без формули - да използвате именувани диапазони и оператора за пресичане (интервал). В следващия урок всички алтернативни решения са обяснени подробно: Как да направим двупосочно търсене?търсене в Excel.

    Функция OFFSET - ограничения и алтернативи

    Надяваме се, че примерите с формули на тази страница са хвърлили известна светлина върху начина на използване на OFFSET в Excel. Въпреки това, за да използвате ефективно функцията в собствените си работни книги, трябва не само да познавате нейните силни страни, но и да внимавате за нейните слаби страни.

    Най-важните ограничения на функцията OFFSET на Excel са следните:

    • Подобно на други енергонезависими функции, OFFSET е функция, изискваща много ресурси При всяка промяна в изходните данни формулите OFFSET се преизчисляват, което кара Excel да работи малко по-дълго. Това не е проблем за една формула в малка електронна таблица. Но ако в работната книга има десетки или стотици формули, преизчисляването на Microsoft Excel може да отнеме доста време.
    • Формулите OFFSET на Excel са Трудно е да се направи преглед Тъй като препратките, връщани от функцията OFFSET, са динамични, големите формули (особено с вложени OFFSET) могат да бъдат доста трудни за отстраняване на грешки.

    Алтернативи на използването на OFFSET в Excel

    Както често се случва в Excel, един и същ резултат може да бъде постигнат по няколко различни начина. Ето три елегантни алтернативи на OFFSET.

    1. Таблици на Excel

      От Excel 2002 насам разполагаме с една наистина чудесна функция - пълноценни таблици на Excel, за разлика от обичайните диапазони. За да направите таблица от структурирани данни, просто щракнете върху Вмъкване> Таблица на Начало или натиснете Ctrl + T .

      Чрез въвеждане на формула в една клетка на таблица на Excel можете да създадете така наречената "изчислена колона", която автоматично копира формулата във всички други клетки в тази колона и коригира формулата за всеки ред в таблицата.

      Освен това всяка формула, която се отнася до данните на таблица, автоматично се настройва така, че да включва всички нови редове, които добавяте в таблицата, или да изключва редовете, които изтривате. Технически такива формули работят с колони или редове на таблицата, които са динамични диапазони Всяка таблица в работната книга има уникално име (по подразбиране те са Table1, Table2 и т.н.) и можете да преименувате таблицата си чрез Дизайн tab> Имоти група> Име на таблицата текстово поле.

      Следващата снимка на екрана показва формулата SUM, която се отнася до Бонус Моля, обърнете внимание, че формулата включва данните на таблицата име на колона а не набор от клетки.

    2. Функция INDEX на Excel

      Въпреки че не е точно по същия начин като OFFSET, Excel INDEX също може да се използва за създаване на динамични препратки към диапазони. За разлика от OFFSET, функцията INDEX не е променлива, така че няма да забави работата на Excel.

    3. Функция INDIRECT на Excel

      С помощта на функцията INDIRECT можете да създавате динамични препратки към диапазони от много източници, като стойности на клетки, стойности на клетки и текст, именувани диапазони. Тя може също така да прави динамични препратки към друг лист или работна книга на Excel. Всички тези примери за формули можете да намерите в нашия урок за функцията INDIRECT на Excel.

    Спомняте ли си въпроса, зададен в началото на този урок - Какво е OFFSET в Excel? Надявам се, че вече знаете отговора : ) Ако искате да придобиете повече практически опит, не се колебайте да изтеглите нашата учебна тетрадка (моля, вижте по-долу), съдържаща всички формули, разгледани на тази страница, и да ги разработите обратно за по-дълбоко разбиране. Благодарим ви, че прочетохте!

    Практическа работна тетрадка за изтегляне

    Примери за формула OFFSET (.xlsx файл)

    Майкъл Браун е отдаден технологичен ентусиаст със страст към опростяване на сложни процеси с помощта на софтуерни инструменти. С повече от десетилетие опит в технологичната индустрия, той е усъвършенствал уменията си в Microsoft Excel и Outlook, както и в Google Sheets и Docs. Блогът на Майкъл е посветен на споделянето на неговите знания и опит с други, предоставяйки лесни за следване съвети и уроци за подобряване на продуктивността и ефективността. Независимо дали сте опитен професионалист или начинаещ, блогът на Michael предлага ценни прозрения и практически съвети за извличане на максимума от тези основни софтуерни инструменти.