Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2012, 17:09   #1
Antijoke
Новичок
Джуниор
 
Регистрация: 09.02.2012
Сообщений: 2
По умолчанию Выручайте! Проблема с функцией СМЕЩ() в именованом диапазоне

Ребята выручайте, сломал всю голову, не пойму как сделать.
Прошу прощения если пишу много, просто что бы было понимание того что делаю, а так основная проблема описана ниже.
Создаю структуру с тремя связанными раскрывающимися списками. Соответсвенно использую функцию СМЕЩ().
1-й список - простой диапазон.
2-й список - СМЕЩ() с ПОИСКПОЗ() по уникальным значениям 1-го диапазона.
=СМЕЩ(Лист2!$A$2;1;ПОИСКПОЗ(Лист1!$ K28;Лист2!$B$2:$DA$2;0);ИНДЕКС(Лист 2!$B$1:$DA$1;ПОИСКПОЗ(Лист1!$K28;Ли ст2!$B$2:$DA$2;0)))
3-й список - СМЕЩ() с ПОИСКПОЗ() по НЕ уникальным значениям 2-го диапазона.
=СМЕЩ(Лист2!$A$2;1;ПОИСКПОЗ(Лист1!$ L28;Лист2!$B$2:$DA$2;0);ИНДЕКС(Лист 2!$B$1:$DA$1;ПОИСКПОЗ(Лист1!$L28;Ли ст2!$B$2:$DA$2;0)))

Соответственно, возникает проблема с тем что в 3-м списке при поиске значений по 2-му списку, он находит первое подходящее значение (потому что они НЕ уникальны), и берет пренадлежащий ему диапазон значений, а надо, что бы брал нужный.

Думал решить проблему выбором начальной позиции в функции СМЕЩ(Лист2!$A$2;....), задав ее формулой, зависящей от выбранного значения в 1-м смиске (Тк 1-й список+2-й спсиок будет уже УНИКАЛЬНОЕ значение).

Но вот тут ПРОБЛЕМА:
Функция СМЕЩ() никак не хочет воспринимать начальную позицию ввиде формулы.
Беру например такую:
=АДРЕС(2;ПОИСКПОЗ(Лист1!$K3;Лист2!$ B$2:$DA$2;0);;;"Лист2")
проверяю в любой ячейке, возвращет значение Лист2!$B$2, то что надо!! Но когда подставляю формулу в СМЕЩ() он ругается и выдает ошибку.

Соответственно получается вот так:

=СМЕЩ(АДРЕС(2;ПОИСКПОЗ(Лист1!$K3;Лист2!$B $2:$DA$2;0);;;"Лист2");1;ПОИСКПОЗ(Лист1!$L28;Лист2!$B$2:$ DA$2;0);ИНДЕКС(Лист2!$B$1:$DA$1;ПОИ СКПОЗ(Лист1!$L28;Лист2!$B$2:$DA$2;0 )))

Всю голову уже сломал, не понимаю что ему не нравится? может все дело в том что списки находятся на листе1, а диапазоны значений на листе 2?!
Или он в принципе не воспринимает начальную позицию ввиде формулы?

ЗЫ: Функция СМЕЩ() используется при задании диапазона

Если есть идеи буду ОЧЕНЬ благодарен!!!

Последний раз редактировалось Antijoke; 09.02.2012 в 17:19.
Antijoke вне форума Ответить с цитированием
Старый 09.02.2012, 17:22   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

результат функции АДРЕС - это срока, а не ссылка на ячейку.
ДВССЫЛ(АДРЕС(...)) - вернет ссылку на ячейку
а еще проще - используйте ИНДЕКС для получения ссылки на ячейку
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 09.02.2012, 17:36   #3
Antijoke
Новичок
Джуниор
 
Регистрация: 09.02.2012
Сообщений: 2
По умолчанию

Действительно, так заработало!
Буду продолжать.
Спасибо!!!
Antijoke вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с функцией MeTeOpA C# (си шарп) 6 11.07.2011 00:07
Проблема с функцией strtok Mr.Merso Общие вопросы C/C++ 0 08.05.2011 20:01
проблема с функцией saix Общие вопросы C/C++ 14 28.10.2010 19:07
Прошу помочь с функцией СМЕЩ kzld Microsoft Office Excel 4 29.01.2009 16:55