KutoolsforOffice — Одно решение — пять мощных инструментов.Меньше усилий — больше результата.

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

АвторСяоянДата изменения

Обычно именованные диапазоны очень полезны для пользователей Excel: вы можете выделить набор значений в столбце, присвоить ему имя и затем ссылаться на этот диапазон по имени вместо использования стандартных ссылок на ячейки. Однако чаще всего вам нужно добавлять новые данные, чтобы расширить диапазон в будущем. В этом случае приходится возвращаться в меню Формулы > Менеджер имён и заново определять диапазон, включая новые значения. Чтобы избежать этой рутины, создайте динамический именованный диапазон — он автоматически подстраивается под добавление новых строк или столбцов, и вам больше не придётся каждый раз обновлять ссылки вручную.

Создание динамического именованного диапазона в Excel путём создания таблицы

Создание динамического именованного диапазона в Excel с помощью функции

Создание динамического именованного диапазона в Excel с помощью кода VBA


Создание динамического именованного диапазона в Excel путём создания таблицы

Если вы работаете в Excel 2007 или более поздней версии, самый простой способ создать динамический именованный диапазон — это преобразовать данные в именованную таблицу Excel.

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

doc-dynamic-range1

1. Сначала задайте имя диапазону ячеек. Выделите диапазон A1:A6, введите имя Date в Поле имени и нажмите клавишу Enter. Аналогичным образом присвойте имя Saleprice диапазону B1:B6. Затем в пустой ячейке создайте формулу =SUM(Saleprice) (см. скриншот):

doc-dynamic-range2

2. Выделите диапазон и нажмите Вставка > Таблица (см. скриншот):

doc-dynamic-range3

3. В окне Создание таблицы установите флажок Моя таблица содержит заголовки (если диапазон не содержит заголовков, снимите флажок) и нажмите кнопку ОК. Диапазон данных будет преобразован в таблицу (см. скриншоты):

doc-dynamic-range4-2doc-dynamic-range5

4. После ввода новых значений вслед за существующими данными именованный диапазон автоматически обновится, и формула изменится соответственно (см. скриншоты ниже):

doc-dynamic-range6-2doc-dynamic-range7

Примечания:

1. Новые данные должны размещаться непосредственно рядом с существующими — между ними не должно быть пустых строк или столбцов.

2. В таблице вы можете вставлять данные между уже существующими значениями.


Создание динамического именованного диапазона в Excel с помощью функции

В Excel 2003 и более ранних версиях первый метод недоступен, поэтому предлагаем альтернативный способ. Следующая функция OFFSET( ) поможет решить эту задачу, хотя и выглядит несколько громоздкой. Допустим, у вас есть диапазон данных с заданными мной именами ячеек: например, A1:A6 с именем Date, а также B1:B6 с именем Saleprice. Одновременно я создаю формулу для Saleprice (см. скриншот):

doc-dynamic-range2

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

1. Перейдите в меню Формулы > Менеджер имен (см. скриншот):

doc-dynamic-range8

2. В диалоговом окне Менеджер имен выберите нужный элемент и нажмите кнопку Изменить.

doc-dynamic-range9

3. В появившемся диалоговом окне Редактировать имя введите формулу =OFFSET(Sheet1!$A$1, 0, 0, COUNTA($A:$A), 1) в поле Ссылка на (см. скриншот):

doc-dynamic-range10

4. Затем нажмите кнопку ОК и повторите шаги 2 и 3, чтобы скопировать эту формулу =OFFSET(Sheet1!$B$1, 0, 0, COUNTA($B:$B), 1) в поле Ссылка на для имени Saleprice — имя ячейки.

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

doc-dynamic-range6-2doc-dynamic-range7

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

Совет: пояснение к этой формуле:

  • =OFFSET(reference,rows,cols,[height],[width])
  • -1
  • =OFFSET(Sheet1!$A$1, 0, 0, COUNTA($A:$A), 1)
  • ссылкасоответствует начальной позиции ячейки; в данном примере это Sheet1!$A$1;
  • строка указывает количество строк, на которое вы переместитесь вниз относительно начальной ячейки (или вверх, если указано отрицательное значение). В данном примере 0 означает, что список начнётся с первой строки вниз
  • столбец определяет, на сколько столбцов вы переместитесь вправо от начальной ячейки (или влево, если указано отрицательное значение). В приведённой выше формуле значение 0 означает, что диапазон не расширяется ни на один столбец вправо.
  • [высота] соответствует высоте (то есть количеству строк) диапазона, начинающегося с скорректированной позиции. $A:$A подсчитает все введённые элементы в столбце A.
  • [ширина] соответствует ширине (то есть количеству столбцов) диапазона, начинающегося с скорректированной позиции. В приведённой выше формуле список будет занимать 1 столбец.

Вы можете адаптировать эти аргументы под свои нужды.


Создание динамического именованного диапазона в Excel с помощью кода VBA

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

1. Активируйте нужный лист.

2. Удерживая клавиши ALT + F11, откройте окно Microsoft Visual Basic для приложений.

3. Нажмите Вставка > Модуль и вставьте следующий код в окно Модуль.

Код VBA: создание динамического именованного диапазона

Sub CreateNamesxx()
'Update 20131128
Dim wb As Workbook, ws As Worksheet
Dim lrow As Long, lcol As Long, i As Long
Dim myName As String, Start As String
Const Rowno = 1
Const Colno = 1
Const Offset = 1
On Error Resume Next
Set wb = ActiveWorkbook
Set ws = ActiveSheet
lcol = ws.Cells(Rowno, 1).End(xlToRight).Column
lrow = ws.Cells(Rows.Count, Colno).End(xlUp).Row
Start = Cells(Rowno, Colno).Address
wb.Names.Add Name:="lcol", RefersTo:="=COUNTA($" & Rowno & ":$" & Rowno & ")"
wb.Names.Add Name:="lrow", RefersToR1C1:="=COUNTA(C" & Colno & ")"
wb.Names.Add Name:="myData", RefersTo:="=" & Start & ":INDEX($1:$65536," & "lrow," & "Lcol)"
For i = Colno To lcol
    myName = Replace(Cells(Rowno, i).Value, " ", "_")
    If myName <> "" Then
        wb.Names.Add Name:=myName, RefersToR1C1:="=R" & Rowno + Offset & "C" & i & ":INDEX(C" & i & ",lrow)"
    End If
Next
End Sub

4. Затем нажмите клавишу F5, чтобы выполнить код. Будут созданы динамические именованные диапазоны, названные в соответствии со значениями первой строки, а также общий динамический диапазон с именем MyData, охватывающий все данные.

5. При вводе новых значений после строк или столбцов диапазон будет автоматически расширяться (см. скриншоты):

doc-dynamic-range12
-1
doc-dynamic-range13

Примечания:

1. С помощью этого кода имя ячейки не отображается в Поле имени. Для удобного просмотра и использования имени ячейки я установил Kutools для Excel, с помощью которого в Навигации отображаются созданные динамические имена ячеек.

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

3. При использовании этого кода ваш диапазон данных должен начинаться с ячейки A1.


Связанная статья:

Как автоматически обновлять диаграмму после ввода новых данных в Excel?

Лучшие инструменты повышения продуктивности в Office

🤖KUTOOLS AI Помощник: Преобразуйте Анализ данных с помощью:Интеллектуального выполнения   |  Генерации кода|  Создания пользовательские формулы  |  Анализа данных и построения диаграмм|  Вызова Расширенные функции
Популярные функции:Поиск, выделение или Отметить дубликаты   |  Удалить пустые строки   |  Объединить столбцы или ячеек без потери данных   |  Округление без использования формул
Супер ПОИСК:VLookup по нескольким критериям  |  VLookup по нескольким значениям  |   VLookup по нескольким листам   |   Распознавание нечетких соответствий
Расширенный раскрывающийся список:Быстрое создание выпадающего списка   |  Зависимый выпадающий список   |  Выпадающий список с множественным выбором
Управление столбцами:Добавление заданного количества столбцов|Перемещение столбцов|Переключение видимости скрытых столбцов|Сравнение диапазонов и столбцов
Избранные функции:Сетка фокусировки   |  Просмотр дизайна   |Улучшенная строка формулы   | Управление рабочими книгами и листами   |  Библиотека ресурсов(автотекст)|  Выбор даты   |  Объединить листы  |  Шифрование/Расшифровать ячейки   | Отправка писем по списку   |  Супер фильтр   |   Специальный фильтр(Фильтр ячеек с жирным шрифтом/курсив/зачёркивание…) …
Лучшие наборы инструментов 15:12 Текстовыеинструменты(Добавить текст,Удалить определенные символы, …)|   50+Типыдиаграмм(Диаграмма Ганта, …)|   40+ Практические формулы(Рассчитать возраст на основе даты рождения, …)|   19 Инструментывставки(Вставить QR-код,Вставка изображения по пути, …)|   12 Инструментыпреобразования(Преобразовать в слова,Конвертация валют, …)|   7 Объединить и разделитьИнструменты(Расширенное объединение строк,Разделить ячейки, …)|… и многое другое
Используйте Kutools на предпочитаемом языке — поддержка английского, испанского, немецкого, французского, китайского и ещё 40+ языков!

Раскройте весь потенциал Excel с помощью Kutools для Excel и ощутите эффективность как никогда раньше.Kutools для Excel предлагает более 300 расширенных функций для повышения продуктивности и Экономия времени.Нажмите здесь, чтобы получить нужную Вам функцию…


Office Tab добавляет в Office вкладки и значительно упрощает Вашу работу

  • Включите редактирование и чтение во вкладках в Word, Excel, PowerPoint, Publisher, Access, Visio и Project.
  • Открывайте и создавайте несколько документов во вкладках одного окна — вместо того чтобы использовать отдельные окна.
  • Повышает вашу продуктивность на 50 % и экономит сотни кликов мышью каждый день!

Все надстройки Kutools — один установщик

Kutools for Office — набор надстроек для Excel, Word, Outlook и PowerPoint, а также Office Tab Pro, идеально подходящий командам, работающим с разными приложениями Office.

ExcelWordOutlookTabsPowerPoint
  • Единый комплект— надстройки для Excel, Word, Outlook и PowerPoint + Office Tab Pro
  • Один установщик, одна лицензия— настройка занимает считанные минуты (готово для MSI)
  • Лучше работать вместе— оптимизированная продуктивность во всех приложениях Office
  • 30-дневная полнофункциональная пробная версия— без регистрации и кредитной карты
  • Лучшее соотношение цены и качества— экономия по сравнению с покупкой отдельных надстроек