Динамический именованный диапазон Excel: как создавать и использовать

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

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

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

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

    Как создать динамический именованный диапазон в Excel

    Для начала давайте построим динамический именованный диапазон, состоящий из одного столбца и переменного количества строк. Для этого выполните следующие действия:

    1. На Формула во вкладке Определенные имена группу, нажмите Определить имя Или нажмите Ctrl + F3, чтобы открыть Excel Name Manger, и нажмите кнопку Новый... кнопка.
    2. В любом случае Новое имя откроется диалоговое окно, в котором вы укажете следующие детали:
      • В Имя введите название динамического диапазона.
      • В Область применения в выпадающем списке задайте область применения имени. Рабочая тетрадь (по умолчанию) рекомендуется в большинстве случаев.
      • В Относится к введите формулу OFFSET COUNTA или INDEX COUNTA.
    3. Нажмите OK. Готово!

    На следующем снимке экрана мы определяем динамический диапазон с именем товары которая вмещает в себя все ячейки с данными в столбце A, за исключением строки заголовка:

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

    Общая формула для создания динамического именованного диапазона в Excel выглядит следующим образом:

    OFFSET( первая_ячейка , 0, 0, COUNTA( колонка ), 1)

    Где:

    • первая_ячейка - первый элемент, включаемый в именованный диапазон, например, $A$2.
    • колонка - абсолютная ссылка на колонку, например $A:$A.

    В основе этой формулы лежит использование функции COUNTA для получения количества незаполненных ячеек в интересующем вас столбце. Это число попадает непосредственно в функцию высота аргумент функции OFFSET(reference, rows, cols, [height], [width]), указывающий ей, сколько строк возвращать.

    Кроме того, это обычная формула смещения, где:

    • ссылка это начальная точка, от которой отталкивается смещение (первая_ячейка).
    • строки и колонки равны 0, так как нет ни столбцов, ни строк для смещения.
    • ширина равна 1 колонке.

    Например, чтобы построить динамический именованный диапазон для столбца A в Листе3, начинающийся с ячейки A2, мы используем эту формулу:

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

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

    Формула INDEX для создания динамического именованного диапазона в Excel

    Другой способ создания динамического диапазона в Excel - использование COUNTA в сочетании с функцией INDEX.

    первая_ячейка :INDEX( колонка , COUNTA( колонка ))

    Эта формула состоит из двух частей:

    • В левой части оператора диапазона (:) вы помещаете жестко заданную начальную ссылку, например $A$2.
    • В правой части вы используете функцию INDEX(array, row_num, [column_num]) для определения конечной ссылки. Здесь вы предоставляете весь столбец A для массива и используете COUNTA для получения номера строки (т.е. количества не входящих ячеек в столбце A).

    Для нашего примера набора данных (см. скриншот выше) формула выглядит следующим образом:

    =$A$2:INDEX($A:$A, COUNTA($A:$A))

    Поскольку в столбце A есть 5 незаполненных ячеек, включая заголовок столбца, COUNTA возвращает 5. Следовательно, INDEX возвращает $A$5, которая является последней использованной ячейкой в столбце A (обычно формула Index возвращает значение, но оператор ссылки заставляет ее возвращать ссылку). И поскольку мы установили $A$2 в качестве начальной точки, конечным результатом формулы является диапазон $A$2:$A$5.

    Чтобы проверить только что созданный динамический диапазон, можно попросить COUNTA получить количество элементов:

    =COUNTA(Items)

    Если все сделано правильно, результат формулы будет меняться после добавления или удаления элементов в/из списка:

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

    Как сделать двумерный динамический диапазон в Excel

    Для построения двумерного именованного диапазона, в котором динамическим является не только количество строк, но и количество столбцов, используйте следующую модификацию формулы INDEX COUNTA:

    первая_ячейка :INDEX($1:$1048576, COUNTA( первый_столбец ), COUNTA( первый_ряд )))

    В этой формуле у вас есть две функции COUNTA для получения последней непустой строки и последнего непустого столбца ( row_num и номер_столбца аргументы функции INDEX, соответственно). В массив аргумент, вы подаете весь рабочий лист (1048576 строк в Excel 2016 - 2007; 65535 строк в Excel 2003 и ниже).

    А теперь давайте определим еще один динамический диапазон для нашего набора данных: диапазон с именем продажи которая включает данные о продажах за 3 месяца (с января по март) и автоматически корректируется по мере добавления новых товаров (строк) или месяцев (столбцов) в таблицу.

    При данных о продажах, начинающихся в столбце B, строка 2, формула принимает следующий вид:

    =$B$2:INDEX($1:$1048576,COUNTA($B:$B),COUNTA($2:$2))

    Чтобы убедиться, что ваш динамический диапазон работает так, как должен, введите следующие формулы где-нибудь на листе:

    =SUM(продажи)

    =SUM(B2:D5)

    Как видно на скриншоте ниже, обе формулы возвращают одинаковый итог. Разница проявляется в тот момент, когда вы добавляете новые записи в таблицу: первая формула (с динамическим именованным диапазоном) обновляется автоматически, в то время как вторая формула должна обновляться вручную при каждом изменении. Это имеет огромное значение, не так ли?

    Как использовать динамические именованные диапазоны в формулах Excel

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

    Для этого примера мы возьмем классическую формулу INDEX MATCH, которая выполняет Vlookup в Excel:

    ИНДЕКС ( диапазон возврата , MATCH ( поиск_значения , диапазон поиска , 0))

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

    Как показано на скриншоте выше, мы пытаемся создать приборную панель, где пользователь вводит название товара в H1 и получает общую сумму продаж для этого товара в H2. Наш образец таблицы, созданный для демонстрации, содержит всего 4 элемента, но в реальных листах могут быть сотни и даже тысячи строк. Более того, новые элементы могут добавляться ежедневно, поэтому использование ссылок не являетсявариант, потому что вам придется обновлять формулу снова и снова. Я слишком ленив для этого! :)

    Чтобы заставить формулу автоматически расширяться, мы определим 3 имени: 2 динамических диапазона и 1 статическую именованную ячейку:

    Lookup_range: =$A$2:INDEX($A:$A, COUNTA($A:$A))

    Return_range: =$E$2:INDEX($E:$E, COUNTA($E:$E))

    Значение_поиска: =$H$1

    Примечание. Excel добавит имя текущего листа ко всем ссылкам, поэтому перед созданием имен обязательно откройте лист с исходными данными.

    Теперь начните вводить формулу в H1. Когда дело дойдет до первого аргумента, введите несколько символов имени, которое вы хотите использовать, и Excel покажет все доступные подходящие имена. Дважды щелкните подходящее имя, и Excel сразу же вставит его в формулу:

    Завершенная формула выглядит следующим образом:

    =INDEX(Return_range, MATCH(Lookup_value, Lookup_range, 0))

    И работает отлично!

    Как только вы добавите новые записи в таблицу, они сразу же будут включены в ваши расчеты, и вам не придется вносить ни одного изменения в формулу! А если вам понадобится перенести формулу в другой файл Excel, просто создайте те же имена в целевой рабочей книге, скопируйте/вставьте формулу, и она сразу же заработает.

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

    Вот так можно создавать и использовать динамические именованные диапазоны в Excel. Для более детального изучения формул, рассмотренных в этом руководстве, вы можете скачать наш образец рабочей книги Excel Dynamic Named Range. Я благодарю вас за прочтение и надеюсь увидеть вас в нашем блоге на следующей неделе!

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