Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу здесь за 20 тыс руб в месяц! alarforum@yandex.ru


Ответ
 
Опции темы
Старый 24.12.2012, 13:06   #1
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию Динамические именованные диапазоны

Всем привет! Возник вопрос по использованию именованных диапазонов: функция ДВССЫЛ в случае с динамическими диапазонами выдаёт ошибку ссылки. Это её нормальное поведение или нужно потанцевать с бубном?

з.ы. нашёл ссылку на планете, но там походу БД почистили(
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 24.12.2012, 15:14   #2
Serge 007
Участник клуба
 
Аватар для Serge 007
 
Регистрация: 15.12.2009
Сообщений: 1,340
По умолчанию

Как используете ДВССЫЛ? Пример давайте
Бесплатная помощь: www.excelworld.ru
Платная помощь: serge_007.planetaexcel@mail.ru
https://money.yandex.ru: 41001419691823
Serge 007 вне форума Ответить с цитированием
Старый 25.12.2012, 07:15   #3
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Есть примерно такие именованные диапазоны:
Код:
Январь
=Лист1!$A$1:$D$31
Февраль
=Лист1!$A$40:$D$68
Март
=Лист1!$A$80:$D$111
и т.д.
а также динамический диапазон:
Код:
Год
=Январь + Февраль + Март+...
И примерно такая формула:
Код:
=СУММ(ИНДЕКС(ДВССЫЛ(Лист2!$A$1),,Столбец(ЯчейкаСТребуемымСтолбцом)))
Если я указываю в ячейке Лист2!A1 значение Год (с Январём и т.д. работает нормально), то выдаёт ошибку #ССЫЛ, ходя при замене ДВССЫЛ(Лист2!$A$1) на Год всё работает как положено.
Как я понял, это связано с тем, что функция не инициирует вычисление динамического диапазона. Вот мне и интересно, так это, либо есть какие-то обходные пути?
Правильно поставленная задача - три четверти решения.

Последний раз редактировалось DiemonStar; 25.12.2012 в 07:17.
DiemonStar вне форума Ответить с цитированием
Старый 25.12.2012, 11:37   #4
IgorGO
МегаМодератор
СуперМодератор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,343
По умолчанию

Год=Январь + Февраль + Март+...

1) год - это не динамический диапазон. это сумма первых ячеек диапазонов январь, февраль, март....
2) в режиме массива - это диапазон с суммами соответсвующих ячеек (если все обьявленные январь, февраль, март.... имеют одинаковый размер* иначе #Н/Д)
3) в любом случае в таком виде, Год - это виртуальный диапазон без конкретного адреса на листе и ДВССЫЛ не найдет его
и
4) не очень удачное решение присвоить диапазону имя аналогичное существующей функции, хотя такая конструкция =Год(Год) допустима и работоспособна.

обьявите Год как Лист1!$A$1:$D$365 и пользуйтесь на здоровье.
41001804815208 - Яндекс-деньги благодарности за удачные советы и решения можно отправлять прямо сюда)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 25.12.2012, 12:33   #5
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
4) не очень удачное решение присвоить диапазону имя аналогичное существующей функции, хотя такая конструкция =Год(Год) допустима и работоспособна.
Название я привёл как пример. на практике использовал За_Год.

Цитата:
3) в любом случае в таком виде, Год - это виртуальный диапазон без конкретного адреса на листе и ДВССЫЛ не найдет его
Вот это и было интересно.

Цитата:
обьявите Год как Лист1!$A$1:$D$365 и пользуйтесь на здоровье.
Увы, но такой вариант не прокатит: исходные данные состоят из нескольких таблиц по месяцам. И в них используется локальная статистика и данные не используемые в данной задаче, которые при таком подходе исказят результат.

Проблему я решил дублированием расчётной таблицы (которая на Лист2) и заменой в формуле функции ДВССЫЛ(Лист2!$A$1) на явное указание массива (ЗаГод). Вопрос же задал исключительно с познавательной точки зрения.

Спасибо за ответы!
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Именованные таблицы DiemonStar Microsoft Office Excel 4 02.10.2012 17:02
Именованные ячейки Foxx Microsoft Office Excel 1 19.02.2012 23:33
Поменять местами диапазоны bize Microsoft Office Excel 8 09.02.2012 20:18
Динамические диапазоны LaryMusa Microsoft Office Excel 8 05.07.2010 20:20
Как просуммировать диапазоны? Алексей11111 Microsoft Office Excel 7 28.11.2009 18:19


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840