Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Поиск данных на листе, где результатом поиска должен стать массив
 
Добрый день!
Нужна помощь. Мне необходимо реализовать поиск на листе с учетом данных формы. То есть на форме есть два поля Label (где отображается дата текущая) и ListBox с множественным выбором. Вроде бы поиск данных легко реализовывается через функции VLOOKUP и HLOOKUP, но проблема в том что результатом поиска будет массив ячеек. Либо я неверно организовала таблицу, чем себе усложнила задачу, либо неверный алгоритм выбираю решения, который не приведет меня к нужному результату.
В конечном итоге мне надо по выбранным сотрудникам на форме "DistributionOfDailyPlans" рассчитать план по продуктам, то есть если человек работает сегодня, то проверяем первый день ли он работает в этом месяце:
- Если первый, то его план рассчитываем по формуле (Лист "Отчет_основной" План по продукту / Кол-во рабочих дней)
- Если не первый, то (План по продукту - Факт / Кол-во рабочих дней - кол-во отработанных).
Проверку первый рабочий день или нет, я думала делать по принципу Если сумму всех ячеек по плану на даты = 0, то мы считаем по формуле:
Месячный план / Кол-во рабочих дней, если нет то (План по продукту - Факт / Кол-во рабочих дней - кол-во отработанных)
 
Цитата
Вроде бы поиск данных легко реализовывается через функции VLOOKUP и HLOOKUP, но проблема в том что результатом поиска будет массив ячеек.
Диапазон ячеек. Массивы - это уже VBA.
Вам что конкретно нужно сделать? Так и не понял. Макрос в примере вроде работает.
Если надо вернуть в формулу диапазон с помощью функций поиска, то это "летучими" функциями ДВССЫЛ() и/или СМЕЩ().
Если надо с помощью VBA найти диапазон ячеек на листе и получить из него массив значений, то ищете нужную ячейку диапазона (алгоритм и инструменты поиска выбираете в зависимости от задачи, например, метод Range.Find()), а потом от неё выстраиваете/считаете нужный диапазон по его признакам (если он отделён пустыми ячейками, то .UsedRange, если нет, то по обстоятельствам) и просто записываете .Value или .Value2 в переменную типа Variant.
Изменено: Irregular Expression - 3 Апр 2018 18:08:52
Страницы: 1
Читают тему (гостей: 1)