Оглавление
В этом учебном пособии вы узнаете, как создать динамический именованный диапазон в Excel и как использовать его в формулах, чтобы новые данные автоматически включались в вычисления.
В прошлом уроке мы рассмотрели различные способы определения статического именованного диапазона в Excel. Статическое имя всегда ссылается на одни и те же ячейки, что означает, что вам придется обновлять ссылку на диапазон вручную каждый раз, когда вы добавляете новые или удаляете существующие данные.
Если вы работаете с постоянно меняющимся набором данных, вы можете сделать именованный диапазон динамическим, чтобы он автоматически расширялся для размещения новых добавленных записей или сужался для исключения удаленных данных. Далее в этом руководстве вы найдете подробное пошаговое руководство о том, как это сделать.
Как создать динамический именованный диапазон в Excel
Для начала давайте построим динамический именованный диапазон, состоящий из одного столбца и переменного количества строк. Для этого выполните следующие действия:
- На Формула во вкладке Определенные имена группу, нажмите Определить имя Или нажмите Ctrl + F3, чтобы открыть Excel Name Manger, и нажмите кнопку Новый... кнопка.
- В любом случае Новое имя откроется диалоговое окно, в котором вы укажете следующие детали:
- В Имя введите название динамического диапазона.
- В Область применения в выпадающем списке задайте область применения имени. Рабочая тетрадь (по умолчанию) рекомендуется в большинстве случаев.
- В Относится к введите формулу OFFSET COUNTA или INDEX COUNTA.
- Нажмите 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. Я благодарю вас за прочтение и надеюсь увидеть вас в нашем блоге на следующей неделе!