Функция OFFSET в Excel — руководство и практические примеры
Функция OFFSET в Excel возвращает ссылку на ячейку или диапазон, смещённый относительно исходной точки. Это полезно для динамических диапазонов и отчётов, но функция является volatile и может замедлять большие книги. В материале — синтаксис, пошаговые примеры, шаблоны использования с таблицами, альтернативы (INDEX), рекомендации по производительности и готовые чек-листы для аналитиков и отчётчиков.
Быстрые ссылки
Синтаксис OFFSET
Простой пример OFFSET
Использование OFFSET в реальных задачах
Что важно помнить
Excel позволяет создать ссылку, которая буквально «смещена» от начальной точки. Функция OFFSET возвращает ссылку на ячейку или диапазон, вычисляемый как смещение от заданной опорной ячейки. Это удобно, когда нужно, чтобы ссылки автоматически подстраивались под изменения структуры данных — добавление строк, столбцов или изменение размера таблицы.
Синтаксис OFFSET
Перед тем как переходить к примерам, разберёмся с синтаксисом. Функция OFFSET принимает до пяти аргументов:
=OFFSET(A,B,C,D,E)где:
- A — ссылка на исходную ячейку или диапазон (опорная точка);
- B — число строк, на которое нужно сместиться вниз относительно A (можно отрицательное значение для смещения вверх);
- C — число столбцов, на которое нужно сместиться вправо относительно A (можно отрицательное значение для смещения влево);
- D — (необязательно) высота возвращаемого диапазона в строках;
- E — (необязательно) ширина возвращаемого диапазона в столбцах.
Аргументы B, C, D и E могут быть либо числами, либо ссылками на ячейки. Если D и E опущены, Excel возвращает одну ячейку того же размера, что и исходная ссылка A. Если A — диапазон, то по умолчанию размер результата будет таким же, как у A.
Важно: OFFSET возвращает ссылку, а не значение. Поэтому часто функцию используют внутри функций, которые принимают диапазон в качестве аргумента (например, SUM, AVERAGE, COUNT и т.д.).
Простой пример OFFSET
Если ввести в ячейку A6 формулу
=OFFSET(A1,2,3,2,3)то Excel возьмёт ячейку A1 как отправную точку, переместится на 2 строки вниз и 3 столбца вправо, и вернёт диапазон размером 2 строки на 3 столбца.

Если бы в формуле не указывать D и E, результатом была бы одна ячейка (та же по размеру, что и опорная ссылка A). Если A — диапазон, то по умолчанию размер результата совпадает с размером A.
Например:
=OFFSET(A1:A3,2,3)вернёт диапазон из трёх строк, потому что опорная ссылка A1:A3 имеет высоту 3.
Использование OFFSET в реальных задачах
Ниже два практичных сценария — отчёты по сотрудникам и отчёт по последним месяцам. В каждом примере мы пошагово собираем формулы и объясняем логику.
Пример 1 — отчёты по сотрудникам и по неделям
Представим таблицу с ID сотрудников, именами и данными по продажам за несколько недель. На отдельной панели справа мы хотим:
- Извлечь конкретное значение (продажи сотрудника X за неделю Y).
- Собрать отчёт по сотруднику (имя, число недель, сумма и среднее).
- Собрать отчёт по неделе (сумма и среднее по всем сотрудникам).

- Извлечение одного значения
В ячейке H4 пишем формулу
=OFFSET(B1,H2,H3)где B1 — отправная точка; в H2 вводим ID (число строк, смещение вниз), в H3 — номер недели (смещение вправо). Использование ссылок делает отчёт интерактивным: при изменении H2 или H3 формула возвращает нужную ячейку из таблицы.

Совет по размещению отправной точки: подберите опорную ячейку так, чтобы смещения соответствовали номерам в интерфейсе (например, если первая неделя — первый столбец справа от опорной точки, берите опорную точку на один столбец левее первой недели).
- Отчёт по сотруднику: имя, число недель, сумма и среднее
- В H7 вводим ID сотрудника.
- В H8 получаем имя через VLOOKUP:
=VLOOKUP(H7,A2:B11,2)
- В H9 считаем число столбцов с данными по неделям (например, заголовки вида Week1, Week2…):
=COUNTIF(1:1,"Week*")
- Сумма продаж сотрудника (H10):
=SUM(OFFSET(B1,H7,1,1,H9))Аргументы: B1 — отправная точка; H7 — смещение по строкам до нужного сотрудника; первый 1 — смещение по столбцам до первой недели; второй 1 — высота (одна строка); H9 — ширина (число недель).

- Среднее (H11):
=AVERAGE(OFFSET(B1,H7,1,1,H9))
Теперь можно менять ID в H7, и отчёт вернёт данные по любому сотруднику. Если добавить новую неделю в таблицу заголовков, формула COUNTIF автоматически увеличит значение H9, и суммы/средние пересчитаются для актуального числа недель.
- Отчёт по неделе (оранжевая таблица)
Для агрегации по столбцу (неделе) используем похожую конструкцию, но смещаемся по столбцам, а выбираем диапазон по строкам: например, в H15 сумма по выбранной неделе (при вводе номера недели в H14):
=SUM(OFFSET(B1,1,H14,10,1))где 1 — смещение по строкам до первой строки с данными (первый пользователь), H14 — номер недели (смещение по столбцам), 10 — число сотрудников (высота диапазона), 1 — ширина (один столбец).

Среднее для этой же недели:
=AVERAGE(OFFSET(B1,1,H14,10,1))
Пример 2 — использование OFFSET с форматированной таблицей и spill-массивом
Когда данные оформлены как «Таблица Excel» (Insert → Table), полезно использовать структурированные ссылки. На примере таблицы продаж и прибыли сформируем справа отчёт по трём последним месяцам.

- Определяем текущий месяц:
=MONTH(TODAY())в ячейке F1. Это возвращает номер текущего месяца (например, 11 для ноября).

- Составляем формулу OFFSET, которая вернёт последние три месяца подряд. Для удобства берём в качестве отправной точки заголовок столбца Month таблицы:
=OFFSET(Table1[[#Headers],[Month]],SUM(F1-3),2,3,1)Эта формула смещается вниз на F1-3 строк (три месяца назад), вправо на 2 столбца (до столбца Profit), и возвращает диапазон 3×1 (три месяца, один столбец с прибылью).

В новых версиях Excel (Office 365, Excel 2021 и новее) результат может «выплескиваться» (spilled array) — формула в F3 заполнит соседние ячейки автоматически. Символ octothorp (#) позволяет ссылаться на весь spill-диапазон, например:
=AVERAGE(F3#)
=SUM(F3#)
Продвинутые шаблоны и приёмы
Ниже набор практичных паттернов, которые часто используются в рабочей аналитике.
- Динамический именованный диапазон через Name Manager
В Name Manager (Formulas → Name Manager) создайте имя Last3Profits со значением:
=OFFSET(Sheet1!$B$1,COUNTA(Sheet1!$B:$B)-3,0,3,1)Это имя всегда будет ссылаться на последние 3 непустые строки в столбце B.
- Использование OFFSET внутри диаграмм
Диаграммы на основе именованных диапазонов, определённых через OFFSET, автоматически расширяются при добавлении данных. В качестве альтернативы используйте динамические массивы и таблицы.
- Комбинирование OFFSET с MATCH и COUNTA
MATCH находит позицию строки или столбца по условию, COUNTA считает непустые ячейки — вместе это даёт гибкие смещения.
Альтернативы и когда лучше не использовать OFFSET
- INDEX вместо OFFSET. INDEX в сочетании с MATCH часто даёт те же результаты, но не является volatile. Пример замены:
=SUM(INDEX(data_range, row_num, col_num))или для диапазона:
=SUM(INDEX(data_range, start_row, start_col):INDEX(data_range, end_row, end_col))INDEX обычно быстрее в больших книгах, потому что Excel не пересчитывает его при каждом изменении.
- Structured Tables. Если ваши данные находятся в формате Table, используйте структурированные ссылки — они проще и надёжнее для масштабируемых отчётов.
Когда не стоит использовать OFFSET:
- В очень больших рабочих книгах с тысячами формул — volatile-функции замедлят расчёт.
- Когда требуется чёткость и простота поддержки — нестандартные OFFSET-конструкции сложнее читать.
Производительность и лучшие практики
Important: OFFSET — volatile функция. Это означает, что Excel может пересчитывать формулы с OFFSET чаще, чем с неvolatile функциями. В больших моделях это становится заметно.
Рекомендации для оптимизации:
- Заменяйте OFFSET на INDEX+MATCH, если вам нужна лучшая производительность.
- Старайтесь ограничивать область ссылок, вместо обращения к целым столбцам (A:A).
- Используйте промежуточные вычисления в вспомогательных ячейках, чтобы уменьшить глубину вложенности формулы.
- Переведите расчёт на ручной режим (Manual) при массовых обновлениях и затем пересчитывайте книгу вручную.
Отладка и тестовые сценарии
Критерии приёмки формулы с OFFSET:
- Формула возвращает ожидаемую ячейку/диапазон при известных входных значениях.
- При добавлении строки/столбца диапазон смещается корректно.
- При изменении входных параметров (ID, номер недели и т. п.) отчёт обновляется без ошибок.
Базовые тестовые кейсы:
- Проверка на граничные значения (смещение 0, отрицательные смещения).
- Добавление пустых строк и столбцов между данными.
- Совместимость с различными версиями Excel (особенно для spill-массивов).
Ментальные модели и эвристики
- Представляйте таблицу как координатную сетку: OFFSET говорит Excel, сколько шагов сделать вниз и вправо от опорной точки.
- Если вы тянете аналитику к скорости и стабильности, сначала спросите: «Можно ли сделать то же самое через INDEX или таблицы?» — если да, выбирайте их.
- Используйте OFFSET, когда нужно возвращать диапазон относительно изменяющейся отправной точки (например, последние N строк).
Checklist: роль — аналитик
- Убедитесь, что отправная точка логична и не будет удалена пользователями.
- Ограничьте диапазоны, не используйте целые столбцы без необходимости.
- Задокументируйте имена областей и цель OFFSET в комментариях.
Checklist: роль — разработчик шаблонов отчётов
- Предусмотрите контроль ошибок (IFERROR) вокруг формул с OFFSET.
- Тестируйте на выборках с небольшими и большими объёмами данных.
- Разработайте fallback-логику для старых версий Excel без spill.
SOP: как создать отчёт с OFFSET (шаг за шагом)
- Определите финальную визуализацию и какие значения должны быть динамичными.
- Выберите опорную ячейку A так, чтобы смещения были интуитивны.
- Протестируйте простую OFFSET-формулу для одной ячейки.
- Оберните OFFSET в агрегирующие функции (SUM, AVERAGE) при необходимости.
- Если нужен диапазон, укажите D и E. Тестируйте на граничных сценариях.
- Подумайте о переходе на именованные диапазоны для читаемости.
- Проверяйте производительность и, при необходимости, заменяйте на INDEX.
Совместимость и миграция
- Spill-массивы (символ #) доступны в Excel 365 и Excel 2021+. В старых версиях результат не спилится — придётся использовать Ctrl+Shift+Enter или копировать формулу вниз.
- Структурированные таблицы (Table) поддерживаются в большинстве современных версий; они упрощают построение динамики.
- Volatile-функции особенно проблемны в Excel Online и на слабых машинах.
Когда OFFSET «не сработает» — противопримеры
- Если опорная ячейка была удалена или перемещена вручную, ссылка сломается.
- Если пользователь вставляет или удаляет строки/столбцы так, что логика смещения изменяется — нужен контроль и защита листа.
- В сценариях с миллионами строк и множеством volatile-формул расчёт может стать неприемлемо медленным.
Быстрый список альтернатив
- INDEX + MATCH (не volatile, чаще быстрее).
- Структурированные ссылки к Table (удобно для визуализации и автодополнения).
- FILTER / TAKE / DROP (в Excel с динамическими массивами можно использовать FILTER для сложных выборок).
Короткое объявление (анонс для рассылки, 100–200 слов)
Функция OFFSET — мощный инструмент для динамических отчётов в Excel. В этом руководстве вы найдёте понятные объяснения синтаксиса, пошаговые примеры для извлечения одиночных значений и диапазонов, работу с таблицами и spill-массивами, а также рекомендации по производительности. Мы показываем, как применять OFFSET в реальных ситуациях: отчёты по сотрудникам, подведение итогов за недели и извлечение последних N месяцев. В конце — чек-листы для аналитиков, SOP для создания отчётов и альтернативы (INDEX), если необходима лучшая производительность. Руководство полезно как начинающим, так и опытным пользователям, которые хотят строить устойчивые и поддерживаемые модели в Excel.
И напоследок: функция OFFSET пригодится не только в рабочей бухгалтерии — её удобно использовать в персональных проектах (спортстатистика, трекеры хобби и т.п.). Главное — продумать опорную точку и контролировать влияние volatile-функций на производительность книги.
Похожие материалы
Как экономить мобильные данные в Apple Music
Персональные результаты Google Assistant на блокировке
Настройка уведомлений Outlook: отключить и адаптировать
Добавить дату и время в Google Sheets
Таймер Помодоро на Python с Tkinter