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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2015, 18:10   #1
14aleksey
 
Регистрация: 20.04.2015
Сообщений: 7
По умолчанию Расширенная пользовательская функция INDEX()

Добрый день, уважаемые программисты!
Помогите пожалуйста решить вот такую задачу...
Есть книга Excel, состоящая из двух листов.
На листе №1 происходят вычисления некоторых значений. На листе №2 находятся исходные данные. Данная система напоминает работу программы по созданию Счета-Фактуры, т.*е. когда я в листе №1 задаю название товара (к примеру «яблоки» + «семеринка»), то по этому названию стандартная функция =INDEX() ищет соответствующую цену Товара (прайс - это лист №2) и возвращает ее в нужную ячейку на листе №1.
Задача осложняется тем, что поиск Товара происходит по 2-ум переменным и прайс лист постоянно редактируется (конструкция таблицы остается, меняется количество строк, т.*е. становится больше или меньше). Теперь вопрос: «Как прописать пользовательскую функцию (аналог =INDEX()) чтобы она сама в своем аргументе изменяла массив всех значений из листа №2, массив значений первой переменной согласно таблицы из листа №2 ?»
Для поиска значения по двум переменным, я использую следующую конструкцию: =INDEX($'PRICE LABELS'.B3:F57;MATCH(E7;$'PRICE LABELS'.A3:A57;0);MATCH(D7;$'PRICE LABELS'.B2:F2;0))
, где ячейки Е7 и D7 - это переменные, по которым происходит поиск значения. А массив В3:F57 – это массив всех значений (изменяется), А3:А57 - массив значений первой переменной (изменяется), В2:F2 – массив значений второй переменной (постоянная).
14aleksey вне форума Ответить с цитированием
Старый 20.04.2015, 19:04   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
=ИНДЕКС(ПРАЙС!1:999;поискпоз(Е7;ПРАЙС!А:А;);поискпоз(Д7;ПРАЙС!2:2))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 21.04.2015, 10:09   #3
14aleksey
 
Регистрация: 20.04.2015
Сообщений: 7
По умолчанию

Спасибо, IgorGO.
14aleksey вне форума Ответить с цитированием
Старый 21.04.2015, 10:42   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Слово "пользовательская" тут совершенно ни к чему.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 22.04.2015, 11:52   #5
14aleksey
 
Регистрация: 20.04.2015
Сообщений: 7
По умолчанию

Это точно. Просто намудрил я. На самом деле все оказывается намного проще. )))
14aleksey вне форума Ответить с цитированием
Старый 22.04.2015, 11:55   #6
14aleksey
 
Регистрация: 20.04.2015
Сообщений: 7
По умолчанию

А не подскажете функцию, которая могла бы искать значение по двум переменным? Эти две переменные находятся в столбцах. Таблицу с данными изменять нельзя.
14aleksey вне форума Ответить с цитированием
Старый 22.04.2015, 12:35   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

СУММПРОИЗВ() например может.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 22.04.2015, 12:44   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

тот же ИНДЕКС - если нужно взять 1 значение.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 22.04.2015 в 15:48.
IgorGO вне форума Ответить с цитированием
Старый 22.04.2015, 12:51   #9
14aleksey
 
Регистрация: 20.04.2015
Сообщений: 7
По умолчанию

СУММПРОИЗВ() может не подойти, т.к. переменные для поиска значения - это текст.
14aleksey вне форума Ответить с цитированием
Старый 22.04.2015, 12:59   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Текст для поиска вполне подходит. Т.е. сферический конь в вакууме претензий не имеет.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пользовательская функция с необязательными параметрами s_bag Microsoft Office Excel 16 08.11.2013 19:58
пользовательская функция МАКСЕСЛИМН Zorg Microsoft Office Excel 7 22.06.2012 11:43
Пользовательская функция с необязательными параметрами savraska Microsoft Office Excel 2 23.05.2010 11:47
Пользовательская функция,возвращающая массив savraska Microsoft Office Excel 2 20.04.2010 03:12
Пользовательская функция с диапазоном в качестве параметра SanSanblch Microsoft Office Excel 2 29.05.2009 17:37