Версия для печати

Динамические именованные диапазоны

Что умеет Excel

 

Очень часто при использовании связки Выпадающий список-Именованный диапазон возникает проблема: а что будет, когда я добавлю в свой диапазон новые данные? Ведь для того, чтобы они отобразились в списке, необходимо будет изменить адрес именованного диапазона. Либо указать заранее расширенный диапазон. Тогда появляются лишние пустые значения в списке, что, согласитесь, тоже не очень-то красиво и не совсем удобно. И вот здесь помогут так называемые Динамические диапазоны. Создав вместо обычного именованного диапазона динамический, Вам не придется каждый раз менять адрес диапазона для отображения в списке всех добавленных значений. И отображаться будут только значения, никаких пустых строк.
Вызываем Диспетчер создания имен и в поле Диапазон пишем формулу:

=СМЕЩ(Лист2!$A$1;;;СЧЁТЗ(Лист2!$A$1:$A$1000);)

Создание динамического диапазона

Столбец, конечно свой указываете, в примере это столбец А. Если думаете, что у Вас может быть более 1000 значений, то увеличиваете значение $A$1000 на необходимое количество строк. Хотя мне лично страшно представить себе такой выпадающий список. Но динамический диапазон может ведь пригодиться и для других целей.

Примечание: созданный таким образом диапазон нельзя использовать в составе функции ДВССЫЛ при создании зависимых выпадающих списков(про зависимые выпадающие списки можно почитать тут). В смысле использовать можно, но результата не будет.

Скачать пример »

  Tips_Lists_Dinamic_Range.xls (37,5 KiB, 2 296 скачиваний)



Поддержать автора сайта
Поделиться ссылкой
  1. 14 Май 2011 в 10:17 | #1

    Спасибо, очень полезная функция.

  2. Владимир другой
    10 Июнь 2011 в 11:46 | #2

    Вместо $A$1:$A$1000
    надо написать $A:$A
    и считаться будет весь столбец, а не до 1000 :)

  3. 10 Июнь 2011 в 13:32 | #3

    Попробуйте записать $A:$A в версии Excel 2007, затем сохранить в формате 2003 и в 2003 Excel открыть. Не «поплывет» Ваша формула? В принципе, может, конечно и не поплыть. Но случаи подобные известны. Так что лично я бы советовал все же испльзовать диапазон с запасом, нежели ссылки на целый столбец.

  4. Андрей
    25 Февраль 2012 в 22:41 | #4

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

    Public Sub AddValueToList()
    Range("ПоследняяЯчейкаДиапазона").Select
    ActiveCell.Value = InputBox("Введите значение")
    End Sub
    Public Sub AddValueToList()
    Range("ПоследняяЯчейкаДиапазона").Select
    ActiveCell.Value = InputBox("Введите значение")
    End Sub

    Вот только как определить эту $ПоследнююЯчейкуДиапазона….

    Может быть плохо искал…
    Спасибо за Ваши труды.

  5. 25 Февраль 2012 в 23:07 | #5

    Андрей, будете смеяться — но действительно плохо искали. Вот ссылка на статью по определению последней ячейки: Как определить последнюю ячейку на листе через VBA?
    Кстати, выделять ячейку совершенно не обязательно:

    Public Sub AddValueToList()
    Range("ПоследняяЯчейкаДиапазона").Value = InputBox("Введите значение")
    End Sub
    Public Sub AddValueToList()
    Range("ПоследняяЯчейкаДиапазона").Value = InputBox("Введите значение")
    End Sub

    А полностью код выглядел бы так:

    Public Sub AddValueToList()
    Cells(Rows.Count, 1).End(xlUp).Offset(1).Value = InputBox("Введите значение")
    End Sub
    Public Sub AddValueToList()
    Cells(Rows.Count, 1).End(xlUp).Offset(1).Value = InputBox("Введите значение")
    End Sub

    Впишет введенное значение в первую пустую ячейку в столбце 1.

  6. Андрей
    26 Февраль 2012 в 01:43 | #6

    Нет, смеяться не буду, а просто улыбнусь.. :)
    А насчет ссылки — я просто до нее еще в тот момент не дошел — начал изучать постепенно, переходя по тематическим ссылкам с самого начала.
    Вам спасибо за подробное описание.
    Буду изучать дальше.

Комментарий будет добавлен после проверки администратором.
Комментарии, не имеющие отношения к комментируемой статье, будут удаляться без уведомления и объяснения причин. Если есть вопрос по проблеме в Excel- добро пожаловаться на Форум