Хитрости »

Именованные диапазоны

 

Для чего вообще нужны именованные диапазоны? Обращение к именованному диапазону гораздо удобнее, чем прописывание адреса в формулах и VBA:

  • Предположим, что в формуле мы ссылаемся на диапазон A1:C10 (возможно даже не один раз). Для примера возьмем простую функцию СУММ(суммирует значения указанных ячеек):
    =СУММ(A1:C10;F1:K10)
    Затем нам стало необходимо суммировать другие данные(скажем вместо диапазона A1:C10 в диапазоне D2:F11). В случае с обычным указанием диапазона нам придется искать все свои формулы и менять там адрес диапазона на новый. Но если назначить своему диапазону A1:C10 имя(к примеру ДиапазонСумм), то в формуле ничего менять не придется - достаточно будет просто изменить ссылку на ячейки в самом имени один раз. Я привел пример с одной формулой - а что, если таких формул 10? 30?
    Примерно такая же ситуация и с использованием в кодах: указав имя диапазона один раз не придется каждый раз при изменении и перемещении этого диапазона прописывать его заново в коде.
  • Именованный диапазон не просто так называется именованным. Если взять пример выше - то отображение в формуле названия ДиапазонСумм куда нагляднее, чем A1:C10. В сложных формулах куда проще будет ориентироваться по именам, чем по адресам. Почему удобнее: если сменить стиль отображения ссылок (подробнее про стиль), то диапазон A1:C10 будет выглядеть как-то вроде этого: R1C1:R10C3. А если назначить имя - то оно как было ДиапазонСумм, так им и останется.
  • При вводе формулы/функции в ячейку, можно не искать нужный диапазон, а начать вводить лишь первые буквы его имени и Excel предложит его ко вводу:
    Вставка имени в функцию
    Данный метод доступен лишь в версиях Excel 2007 и выше

Как обратиться к именованному диапазону
Обращение к именованному диапазону из VBA

Обращение к именованному диапазону в формулах/функциях

  1. =СУММ(Диапазон1)
    Читать подробнее про обращение к диапазонам из VBA
  2. =ВПР("Критерий";Диапазон1;2;0)
    Читать подробнее про функцию ВПР

Если при указании диапазона в формуле выделить именованный диапазон, то его имя автоматически подставится в формулу вместо фактического адреса ячеек:
Выделение в формуле

Ограничения, накладываемые на создание имен

  • В качестве имени диапазона не могут быть использованы словосочетания, содержащие пробел. Вместо него лучше использовать нижнее подчеркивание _ или точку: Name_1, Name.1
  • Первым символом имени должна быть буква, знак подчеркивания (_) или обратная косая черта (\). Остальные символы имени могут быть буквами, цифрами, точками и знаками подчеркивания
  • Нельзя в качестве имени использовать зарезервированные в Excel константы - R, C и RC(как прописные, так и строчные). Связано с тем, что данные буквы используются самим Excel для адресации ячеек при использовании стиля ссылок R1C1 (читать подробнее про стили ссылок)
  • Нельзя давать именам названия, совпадающие с адресацией ячеек: B$100, D2(для стиля ссылок А1) или R1C1, R7(для стиля R1C1). И хотя при включенном стиле ссылок R1C1 допускается дать имени название вроде A1 или D130 - это не рекомендуется делать, т.к. если впоследствии стиль отображения ссылок для книги будет изменен - то Excel не примет такие имена и предложит их изменить. И придется изменять названия всех подобных имен. Если очень хочется - можно просто добавить нижнее подчеркивание к имени: _A1
  • Длина имени не может превышать 255 символов

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

Способ второй
Выделяем ячейку или группу ячеек. Жмем правую кнопку мыши для вызова контекстного меню ячеек. Выбираем пункт:

  • Excel 2007: Имя диапазона (Range Name)
  • Excel 2010: Присвоить имя (Define Name)

Меню ячеек
либо:
Жмем Ctrl+F3
либо:

  • 2007-2010 Excel: вкладка Формулы (Formulas) -Диспетчер имен (Name Manager) -Создать (New)(либо на той же вкладке сразу - Присвоить имя (Define Name))
  • 2003 Excel: Вставка -Имя -Присвоить

Появляется окно создания имени
Окно создания имени
Имя (Name) - указывается имя диапазона. Необходимо учитывать ограничения для имен, которые я описывал в начале статьи.
Область (Scope) - указывается область действия создаваемого диапазона - Книга, либо Лист1:

  • Лист1 (Sheet1) - созданный именованный диапазон будет доступен только из указанного листа. Это позволяет указать разные диапазоны для разных листов, но указав одно и тоже имя диапазона
  • Книга (Workbook) - созданный диапазон можно будет использовать из любого листа данной книги

Примечание (Comment) - здесь можно записать пометку о созданном диапазоне, например для каких целей планируется его использовать. Позже эту информацию можно будет увидеть из диспетчера имен (Ctrl+F3)
Диапазон (Refers to) - при данном способе создания в этом поле автоматически проставляется адрес выделенного ранее диапазона. Его можно при необходимости тут же изменить.

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

Так же см.:
Как обратиться к диапазону из VBA
Динамические именованные диапазоны

Обсуждение: оставлено 11 коммент.
  1. Может кто то сталкивался с задачей присвоить дипазон ячеек через переменные. Нигде не могу найти способ присвоить функции переменную.
    Например:

    такой способ не работает. Может кто то подскажет как правильнее сделать?

  2. Правильнее будет так, как того требует синтаксис VBA :-)

    Это при условии, что Вам действительно нужно брать адреса строки именно из ячеек. Т.е. если в ячейке Y2 будет 3, а в Z2 - 5, то будут выделены строки с 3 по 5-ую.

  3. Александр:

    Выделить диапазон:
    ["Диапазон"].Select
    А как будет выглядеть строка кода для выделения конкретной ячейки конкретного именного диапазона? (скажем, со значением "Лук")

  4. Как обычно к ячейкам обращаетесь - так и обращайтесь:
    [Диапазон].Cells(2,1).Select
    И обратите внимание, что при обращении к диапазону, используя квадратные скобки, имя должно быть без кавычек.

  5. Very good topic. I have discovered a good deal something totally new below. Continue.

  6. Добрый день! А как можно изменить диапазон списка? Где они вообще хранятся?

  7. @Алексей
    В меню не знаю, а горячими клавишами Ctrl+F3. Кстати, если хранить массив в переменной типа Variant, то можно задавать многомерный массив также квадратными скобками.

  8. Юлия:

    Добрый день!
    Создала список. В какой-то момент понадобилось изменить лист со списком. Сделала копию листа, внесла нужные изменения. Тут нужно пояснить – диапазон и место расположение на листе самих списков не менялось. Удалила первоначальный лист со списком. Переименовала копию. В диспетчере имен при копировании листа отразились дубли именованных диапазонов. При удалении первоначального листа у дублей появилось #ССЫЛКА. Удалила эти #ССЫЛКИ.
    Предполагала, что связанный список заработает, ан нет. Не заработал пока заново не создала эти же списки (сначала удалила имеющийся список – потом заново его же создала). Когда удаляла списки заметила, что поле «Область:» в окне «Создание имени» стала серенькой.
    Проблема решена, но интересно, почему не заработал с первого раза!
    В таких случая всегда нужно заново создавать списки или есть другой вариант?
    PS
    Копией листа пришлось воспользоваться так как на нем в свою очередь также были настроены выпадающие списки и они получились более совершенные чем в первом варианте листа со списком.

    • Не избежать этого, если не использовать ДВССЫЛ для ссылки на имя листа. Иначе при переименовании листа все будет работать, а вот при удалении - получите #ССЫЛКА!, т.к. лист с данными для списков и формул был удален.

  9. Андрей:

    Дмитрий, а вот такой вопрос. Как изменить Область действия уже созданного диапазона. Например, при создании диапазона, определили область действия Книга, затем потребовалось изменить эту область на Лист. Однако при использовании стандартного способа Изменить не дает такой возможности.
    Как быть?

Поделитесь своим мнением

Для оформления сообщений Вы можете использовать следующие тэги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Много работаете в Excel, но понимаете, что используете его не на полную?
Пройдите один из тренингов и работайте в Excel эффективно!Заказать

Вы постоянно выполняете однотипные действия в Excel или Word?
Вам надоела рутина?
Закажите создание макроса(программы) - быстро, качественно, недорого!Заказать

Реклама
Логин
Счетчики
Анализ сайта
Рейтинг@Mail.ru
Яндекс.Метрика
© 2015 Excel для всех  Войти