Функция Excel OFFSET - примеры формул и их использование

  • Поделись Этим
Michael Brown

В этом учебнике мы прольем свет на одного из самых загадочных обитателей вселенной Excel - функцию OFFSET.

Итак, что такое OFFSET в Excel? В двух словах, формула OFFSET возвращает ссылку на диапазон, который смещен от начальной ячейки или диапазона ячеек на заданное количество строк и столбцов.

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

    Функция Excel OFFSET - синтаксис и основные способы использования

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

    Синтаксис функции OFFSET следующий:

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

    Первые 3 аргумента являются обязательными, а последние 2 - необязательными. Все аргументы могут быть ссылками на другие ячейки или результатами, возвращаемыми другими формулами.

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

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

    • Ссылка - ячейка или диапазон соседних ячеек, от которых вы берете за основу смещение. Вы можете считать это начальной точкой.
    • Строки - Количество строк, на которое нужно переместиться от начальной точки, вверх или вниз. Если rows - положительное число, формула перемещается ниже начальной точки, если отрицательное - выше начальной точки.
    • Cols - Количество столбцов, на которое формула должна сдвинуться от начальной точки. Как и строки, столбцы могут быть положительными (справа от начальной точки) или отрицательными (слева от начальной точки).

    Необязательные аргументы:

    • Высота - количество возвращаемых строк.
    • Ширина - количество возвращаемых столбцов.

    Аргументы height и width всегда должны быть положительными числами. Если один из них опущен, то по умолчанию используется высота или ширина в параметре ссылка .

    Примечание. OFFSET является непостоянной функцией и может замедлить работу вашего рабочего листа. Замедление прямо пропорционально количеству пересчитываемых ячеек.

    А теперь проиллюстрируем теорию на примере простейшей формулы OFFSET.

    Пример формулы OFFSET в Excel

    Вот пример простой формулы OFFSET, которая возвращает ссылку на ячейку на основе начальной точки, строк и столбцов, которые вы указываете:

    = OFFSET(A1,3,1)

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

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

    Формулы Excel OFFSET - что нужно помнить

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

    Например, если вы попытаетесь использовать формулу = OFFSET(A1,3,1,1,3) сам по себе, он выдаст ошибку #VALUE!, поскольку возвращаемый диапазон (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 & SUM. Теперь давайте взглянем на эти функции под другим углом и посмотрим, что еще они могут делать.

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

    При работе с постоянно обновляемыми рабочими листами вам может понадобиться формула SUM, которая автоматически выбирает все вновь добавленные строки.

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

    Поскольку первая ячейка диапазона для суммирования будет указана непосредственно в формуле SUM, вам останется только определить параметры для функции Excel OFFSET, которая получит последнюю ячейку диапазона:

    • Ссылка - ячейку, содержащую итог, в нашем случае B9.
    • Строки - ячейку прямо над итогом, где требуется отрицательное число -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))

    Следующие подробности помогут вам лучше понять формулы:

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

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

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

    • Cols - количество столбцов для смещения равно нулю (0).
    • Высота - количество суммируемых строк указано в E1.
    • Ширина - 1 колонна.

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

    Точно так же, как мы рассчитывали премии за последние N месяцев, вы можете получить среднее значение за последние N дней, недель или лет, а также найти их максимальное или минимальное значение. Единственное различие между формулами заключается в названии первой функции:

    =СРЕДНЕЕ(СМЕЩЕНИЕ(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 может вернуть значение только справа от столбца поиска.

    В нашем примере таблицы поиска есть два столбца - названия месяцев (столбец 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( таблица поиска , возврат_строки_смещение , MATCH( lookup_value , OFFSET( таблица поиска , lookup_row_offset , 0, 1, СТОЛБЦЫ( таблица поиска )), 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, 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 и т.д.), и вы можете свободно переименовать свою таблицу с помощью функции Дизайн вкладка> Свойства группа> Название таблицы текстовое поле.

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

    2. Функция ИНДЕКС в Excel

      Хотя и не совсем так, как OFFSET, Excel INDEX также можно использовать для создания динамических ссылок на диапазон. В отличие от OFFSET, функция INDEX не является волатильной, поэтому она не будет замедлять работу вашего Excel.

    3. Функция Excel ИНДИРЕКТ

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

    Помните ли вы вопрос, заданный в начале этого учебника? Что такое OFFSET в Excel? Надеюсь, теперь вы знаете ответ : ) Если вы хотите получить более практический опыт, не стесняйтесь скачать нашу рабочую тетрадь (см. ниже), содержащую все формулы, обсуждаемые на этой странице, и проанализировать их для более глубокого понимания. Спасибо за чтение!

    Рабочая тетрадь для тренировок для скачивания

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

    Майкл Браун — увлеченный технологический энтузиаст, стремящийся упростить сложные процессы с помощью программных инструментов. Имея более чем десятилетний опыт работы в технологической отрасли, он отточил свои навыки в Microsoft Excel и Outlook, а также в Google Sheets и Docs. Блог Майкла посвящен тому, чтобы делиться своими знаниями и опытом с другими, предоставляя простые советы и учебные пособия для повышения производительности и эффективности. Являетесь ли вы опытным профессионалом или новичком, в блоге Майкла вы найдете ценную информацию и практические советы, которые помогут вам максимально эффективно использовать эти важные программные инструменты.