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

  • Поділитися Цим
Michael Brown

У цьому уроці ми проллємо світло на одного з найзагадковіших мешканців всесвіту Excel - функцію ОФФСЕТ.

Отже, що таке OFFSET в Excel? У двох словах, формула OFFSET повертає посилання на діапазон, який зміщений від початкової комірки або діапазону комірок на вказану кількість рядків і стовпців.

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

    Функція OFFSET Excel - синтаксис і основні застосування

    Функція OFFSET в Excel повертає комірку або діапазон комірок, що представляє собою задану кількість рядків і стовпців з даної комірки або діапазону.

    Синтаксис функції OFFSET наступний:

    OFFSET(reference, rows, cols, [height], [width])

    Перші 3 аргументи є обов'язковими, а останні 2 - необов'язковими. Всі аргументи можуть бути посиланнями на інші комірки або результатами, що повертаються іншими формулами.

    Схоже, що Microsoft доклала чимало зусиль, щоб вкласти певний сенс в назви параметрів, і вони дійсно дають натяк на те, що ви повинні вказати в кожному з них.

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

    • Посилання - комірка або діапазон суміжних комірок, з яких ви починаєте зміщення. Ви можете вважати її початковою точкою.
    • Ряди - Кількість рядків, на яку потрібно переміститися від початкової точки, вгору або вниз. Якщо кількість рядків додатне число, формула переміщується нижче початкового посилання, якщо від'ємне число - вище початкового посилання.
    • Cols - Кількість стовпців, на яку формула повинна переміститися від початкової точки. Як і рядки, стовпці можуть бути додатними (праворуч від початкового посилання) або від'ємними (ліворуч від початкового посилання).

    Додаткові аргументи:

    • Висота - кількість рядків для повернення.
    • Ширина - кількість стовпців для повернення.

    Обидва аргументи висоти і ширини завжди повинні бути додатними числами. Якщо один з них не вказано, то за замовчуванням використовується висота або ширина посилання .

    Примітка: OFFSET є нестабільною функцією і може уповільнити роботу робочого аркуша. Повільність прямо пропорційна кількості перерахованих комірок.

    А тепер проілюструємо теорію на прикладі найпростішої формули OFFSET.

    Приклад формули OFFSET в Excel

    Ось приклад простої формули OFFSET, яка повертає посилання на клітинку на основі початкової точки, рядків і стовпців, які ви вказуєте:

    =OFFSET(A1,3,1)

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

    Зображення зліва показує маршрут функції, а скріншот справа демонструє, як можна використовувати формулу СРЗНАЧ на реальних даних. Єдина відмінність між двома формулами полягає в тому, що в другій (праворуч) в аргументі рядків міститься посилання на комірку (Е1). Але оскільки в комірці Е1 міститься число 3, то і в аргументі рядків першої формули фігурує точно таке ж число,обидва повернули б ідентичний результат - значення в B4.

    Формули OFFSET в Excel - що потрібно пам'ятати

    • Функція OFFSET полягає в тому, що Excel фактично не переміщує комірки або діапазони, вона просто повертає посилання.
    • Коли формула OFFSET повертає діапазон комірок, аргументи рядків і стовпців завжди посилаються на верхню ліву комірку в повернутому діапазоні.
    • Аргумент посилання повинен містити комірку або діапазон суміжних комірок, інакше ваша формула поверне помилку #ЗНАЧЕННЯ!
    • Якщо вказані рядки та/або стовпці переміщують посилання за межі електронної таблиці, ваша формула OFFSET Excel поверне помилку #REF!
    • Функція ОФФСЕТ може бути використана в будь-якій іншій функції 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, ви можете запитати себе: "Навіщо її використовувати?" Чому б просто не написати пряме посилання типу B4:D4?

    Для цього дуже добре підходить формула OFFSET в Excel:

    Створення динамічних полігонів Пояснення: Посилання типу B1:C4 є статичними, тобто вони завжди посилаються на заданий діапазон. Але деякі завдання легше виконувати з динамічними діапазонами. Це особливо стосується випадків, коли ви працюєте з даними, що змінюються, наприклад, у вас є робочий аркуш, на якому щотижня додається новий рядок або стовпець.

    Отримання діапазону з початкової комірки Іноді ви можете не знати фактичної адреси діапазону, хоча знаєте, що він починається з певної комірки. У таких випадках використання функції OFFSET в Excel є правильним рішенням.

    Як використовувати функцію OFFSET в Excel - приклади формул

    Сподіваюся, вам не стало нудно від такої кількості теорії, адже зараз ми переходимо до найцікавішого - практичного використання функції OFFSET.

    Функції Excel OFFSET і SUM

    Приклад, який ми розглянули хвилину тому, демонструє найпростіше використання OFFSET & SUM. Тепер давайте подивимося на ці функції під іншим кутом і подивимося, що ще вони вміють робити.

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

    При роботі з постійно оновлюваними робочими аркушами може знадобитися формула SUM, яка автоматично вибирає всі нові додані рядки.

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

    Оскільки перша комірка діапазону для підсумовування буде вказана безпосередньо у формулі СУММ, вам залишиться тільки визначитися з параметрами функції Excel СРЗНАЧ, яка отримає цю останню комірку діапазону:

    • Посилання - комірка, що містить підсумок, в нашому випадку В9.
    • Ряди - комірку прямо над підсумком, в якій потрібно ввести від'ємне число -1.
    • Cols - це 0, тому що ви не хочете змінювати стовпець.

    Отже, ось шаблон формули SUM / OFFSET:

    =SUM( перша клітина :(OFFSET( комірка з загальною кількістю , -1,0)

    З урахуванням наведеного вище прикладу формула виглядає наступним чином:

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

    І, як показано на скріншоті нижче, він працює бездоганно:

    Приклад 2. Формула OFFSET в Excel для підсумовування останніх N рядків

    У наведеному вище прикладі припустимо, що ви хочете дізнатися суму премій за останні N місяців, а не загальну суму. Ви також хочете, щоб формула автоматично включала будь-які нові рядки, які ви додаєте до аркуша.

    Для цього завдання ми будемо використовувати функцію Excel СРЗНАЧ в поєднанні з функціями СУММЕСЛИ і СЧЕТЕСЛИ / COUNT:

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

    або

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

    Наступні деталі можуть допомогти вам краще зрозуміти формули:

    • Посилання - заголовок стовпця, значення якого потрібно підсумувати, в даному прикладі комірка B1.
    • Ряди - для підрахунку кількості рядків, що зміщуються, використовується функція СЧЕТ або СУММЕСЛИ.

      COUNT повертає кількість комірок у стовпчику B, що містять числа, від яких віднімаються останні N місяців (число - комірка E1), і додається 1.

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

    • Cols - кількість стовпців для зміщення дорівнює нулю (0).
    • Висота - кількість рядків для підсумовування задається в E1.
    • Ширина - 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))

    Основна перевага цих формул перед звичайними СРЗНАЧ(B5:B8) або МАКС(B5:B8) полягає в тому, що вам не доведеться оновлювати формулу щоразу, коли оновлюється вихідна таблиця. Незалежно від того, скільки нових рядків додається або видаляється на робочому аркуші, формули СРЗНАЧ завжди будуть посилатися на вказану кількість останніх (нижніх) комірок у стовпці.

    Формула OFFSET Excel для створення динамічного діапазону

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

    Формула OFFSET для динамічного діапазону виглядає наступним чином:

    =OFFSET(Назва_аркуша!$A$1, 0, 0, COUNTA(Назва_аркуша!$A:$A), 1)

    В основі цієї формули ви використовуєте функцію COUNTA для отримання кількості непустих комірок у цільовому стовпці. Це число передається в аргумент висоти функції OFFSET, вказуючи їй, скільки рядків потрібно повернути.

    Крім того, це звичайна формула Offset, де:

    • Посилання початкова точка, з якої починається зміщення, наприклад, Лист1!$A$1.
    • Ряди і Cols дорівнюють 0, оскільки немає стовпців чи рядків для зсуву.
    • Ширина це 1 стовпчик.

    Примітка. Якщо ви створюєте динамічний діапазон на поточному аркуші, то немає необхідності включати ім'я аркуша в посилання, Excel зробить це за вас автоматично при створенні іменованого діапазону. В іншому випадку обов'язково включіть ім'я аркуша після знаку оклику, як у цьому прикладі формули.

    Після створення динамічного діапазону імен за допомогою наведеної вище формули OFFSET ви можете використовувати перевірку даних для створення динамічного випадаючого списку, який автоматично оновлюватиметься, як тільки ви додаватимете або видалятимете елементи зі списку-джерела.

    Для отримання детальної покрокової інструкції по створенню випадаючих списків в Excel, будь ласка, ознайомтеся з наступними навчальними матеріалами:

    • Створення випадаючих списків в Excel - статичних, динамічних, з іншої книги
    • Створення випадаючого списку залежних осіб

    Excel OFFSET & VLOOKUP

    Як відомо, простий вертикальний і горизонтальний пошук здійснюється за допомогою функції VLOOKUP або HLOOKUP відповідно. Однак ці функції мають занадто багато обмежень і часто спотикаються в більш потужних і складних формулах пошуку. Тому для виконання більш складного пошуку в таблицях Excel доводиться шукати альтернативи, такі як INDEX, MATCH і OFFSET.

    Приклад 1. Формула OFFSET для лівого Vlookup в Excel

    Одним з найбільш сумнозвісних обмежень функції VLOOKUP є неможливість перегляду ліворуч, тобто VLOOKUP може повернути значення тільки праворуч від стовпця пошуку.

    У нашому прикладі таблиці пошуку є два стовпці - назви місяців (стовпець A) і бонуси (стовпець B). Якщо ви хочете отримати бонус за певний місяць, ця проста формула VLOOKUP спрацює без проблем:

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

    Однак, як тільки ви поміняєте місцями стовпці в таблиці пошуку, це негайно призведе до помилки #N/A:

    Для обробки лівостороннього пошуку потрібна більш універсальна функція, якій не дуже важливо, де знаходиться стовпець, що повертається. Одним з можливих рішень є використання комбінації функцій INDEX і MATCH. Іншим підходом є використання OFFSET, MATCH і ROWS:

    OFFSET( таблиця_пошуку , MATCH( lookup_value , OFFSET( таблиця_пошуку , 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, оскільки ми повертаємо значення з першого стовпця (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( таблиця_пошуку , return_row_offset , MATCH( lookup_value , OFFSET( таблиця_пошуку , lookup_row_offset , 0, 1, COLUMNS( таблиця_пошуку )), 0) -1, 1, 1)

    Де:

    • Зсув_рядка_пошуку - кількість рядків для переходу від початкової точки до шуканого рядка.
    • Повернути_зсув_рядка - кількість рядів для переходу від початкової точки до зворотного ряду.

    Якщо припустити, що таблиця пошуку 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, щоб ввести її правильно.

    Звичайно, ця довга формула СРЗНАЧ не є єдиним можливим способом подвійного пошуку в Excel. Такий же результат можна отримати, використовуючи функції СРЗНАЧ, СУММЕСЛИ або ИНДЕКС ИЛИ СРЗНАЧ. Існує навіть спосіб без формул - використовувати іменовані діапазони і оператор перетину (пробіл). У наступному уроці докладно розглянуті всі альтернативні рішення: Як зробити подвійний пошук в Excelпошук в 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, можна створити так званий "розрахунковий стовпець", який автоматично копіює формулу в усі інші комірки цього стовпця і коригує формулу для кожного рядка таблиці.

      Крім того, будь-яка формула, яка посилається на дані таблиці, автоматично коригується, щоб включити будь-які нові рядки, які ви додаєте в таблицю, або виключити рядки, які ви видаляєте. Технічно такі формули оперують зі стовпчиками або рядками таблиці, які є динамічні діапазони Кожна таблиця в книзі має унікальне ім'я (за замовчуванням Таблиця1, Таблиця2 і т.д.), і ви можете перейменувати таблицю за допомогою кнопки Дизайн вкладка> Властивості група> Назва таблиці текстове поле.

      Наступний скріншот демонструє формулу SUM, яка відноситься до Бонус Звертаємо увагу, що у формулу включено табличні дані, наведені у стовпчику назва стовпця а не ряд клітин.

    2. Функція ІНДЕКС Excel

      Хоча і не зовсім так, як OFFSET, Excel INDEX також можна використовувати для створення посилань на динамічний діапазон. На відміну від OFFSET, функція INDEX не є нестабільною, тому вона не сповільнює роботу Excel.

    3. Непряма функція Excel

      За допомогою функції НЕПРЯМА ви можете створювати динамічні посилання на діапазони з багатьох джерел, таких як значення комірок, значення комірок і тексту, іменовані діапазони. Він також може динамічно посилатися на інший аркуш або книгу Excel. Ви можете знайти всі ці приклади формул у нашому підручнику з функції НЕПРЯМА в Excel.

    Ви пам'ятаєте питання, задане на початку цього уроку - Що таке OFFSET в Excel? Сподіваюся, тепер ви знаєте відповідь :) Якщо ви хочете отримати більше практичного досвіду, завантажте наш практичний посібник (див. нижче), який містить всі формули, розглянуті на цій сторінці, і зробіть їх реверс-інжиніринг для більш глибокого розуміння. Дякуємо за увагу!

    Практичний посібник для завантаження

    Приклади формул OFFSET (файл .xlsx)

    Майкл Браун — відданий ентузіаст технологій із пристрастю до спрощення складних процесів за допомогою програмних засобів. Маючи понад десятирічний досвід роботи в технологічній індустрії, він відточив свої навички роботи з Microsoft Excel і Outlook, а також із Google Таблицями та Документами. Блог Майкла присвячений тому, щоб поділитися своїми знаннями та досвідом з іншими, надаючи прості поради та навчальні посібники для підвищення продуктивності та ефективності. Незалежно від того, чи є ви досвідченим професіоналом чи початківцем, блог Майкла пропонує цінну інформацію та практичні поради щодо отримання максимальної користі від цих основних програмних інструментів.