Страницы: 1
RSS
Поиск и подстановка значений по нескольким значениям
 
Здравствуйте. Возникла проблема. Пытался решить самостоятельно, пользовался уроками из Приёмов (в частности "Двумерный поиск в таблице), но нужного результата получить не удалось.

Пример:
В ячейку М2 надо подставить значение, соответствующее двум параметрам: ячейке H2 и J2. Данные для М2 записаны на листе "Тариф".

Буду очень благодарен за помощь и отдельно за объяснение, что я делал неправильно. Потому что перепробовал несколько способов, но всякий раз получал ошибку.
 
в функции ИНДЕКС попутали местами позиционирование столбец<>строка, ну и какая то бяда с поиском времени скорее всего со знаками после запятой, ограничил 12 вроде работает ну и соответственно формула стала массивной
Лень двигатель прогресса, доказано!!!
 
Сергей, Спасибо за оперативный ответ! Я кстати последовал Вашему совету и переработал таблицу. Оставил рабочую область, а второстепенные данные вынес на другие листы, ну и соответственно избавился от объединённых ячеек.

Единственная загвоздка осталась - если я пишу например 2:20 или 23:30, то формула уже не работает.
 
ну не работает по тому что у вас в базе тарифов такого времени нет и у ПОИСКПОЗ стоит признак точного поиска, ставите не точный поиск и все будет работать, подтягивать позицию ближайшего меньшего от заданного в поиске
Лень двигатель прогресса, доказано!!!
 
У вас неверный формат времени. Преобразуйте в числа. Ваша формула index-match получилась более громоздкой, хотя можно было просто склеить два параметра непосредственно в формуле VLOOKUP и формула получилась бы покороче и без массивов, которые будут тормозить на больших объемах файлов. Я преобразовал тарифы, добавил столбец helper и использовал именованный диапазон - да получается чуть более громоздкая вещь в разделе тарифы, но если вам не лень думать и читать, то можно дальше развить index-match. Если английский позволяет советую читать англоязычные форумы так как там информации и примеров больше. Мне было лень копаться и времени особо нет и поэтому пошел по пути наименьшего сопротивления - VLOOKUP + HELPER (см. во вложении).

Вообще мне кажется, что более верный путь - это умножение базового тарифа за велосипед на количество часов (без всяких поисков) :-) ну и добавление прогрессивной скидки в зависимости от времени (это будет отдельная таблица, но гораздо меньшая по размеру).
 
Oleg Kozlov, А представьте если будет 40 велосипедов и куча другого спортивного инвентаря. Можно всё сделать по простому и без сложных замороченных формул, но это очень громоздко на экране и в размере файла.
 
Я Вам про это и говорю, что файл надо улучшать, а не создавать перекрестные поиски, которые замедлят работу файла. Если у Вас будут одинаковые тарифы на группы велосипедов, то зачем в разделе тарифы вносить все велосипеды? Мне кажется на 40 велосипедов будет 3-5 тарифных сеток, в рамках, которых и надо осуществлять поиск. Плюс мне непонятна логика текущей тарифной сетки. Я уже говорил, что проще сделать тупо умножение базового тарифа на количество часов, а внутри формулы умножения можно легко сделать прогрессивную или фиксированную скидку - это не будет перегрузкой файла. У вас же на каждый час отдельное значение....зачем? Неужели тариф настолько сложный, что не поддается математическим законам?

На первый взгляд файл очень сырой с лишними телодвижениями по формулам и значениям. Мое решение простейшее, но "в лоб" так как мне некогда копаться в чужих файлах и улучшать их  :D (уж извините за прямоту). Чем мог тем помог. Я такой же пользователь как и Вы.

Дальше сами или если не можете, то за минимальную сумму Вам файл допилят в разделе форума "Работа".
 
Посмотрите вот здесь что-то подобное я применял.
http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=77179
 
Игорь133, Вы имеете ввиду формулу с РАЗНДАТ?
 
zva89, уходим от массивности, чуть по другому отражаем время в тарифах в виде целых чисел, меняем формат отображения в ячейках катания корректируем формулу поиска тарифа в части времени все часы с минутами округляем в большую или меньшую сторону в самой формуле
Лень двигатель прогресса, доказано!!!
 
Сергей, немного неудобно если изменить формат времени. В будущем хочу доверить заполнение таблицы другому человеку. Хочу чтобы он взглянув сразу понял что и как.

Применил немного другую формулу и изменил периоды времени, начиная с 0:30 и дальше +1 час
=ЕСЛИОШИБКА(ВПР($J3;Тариф!$A$2:$FM$8;ПОИСКПОЗ($H3;Тариф!$B$2:$FM$2;1);0);0)
Но в ней косяк не могу устранить. если ввожу 0:30, то вылазит название вела, при вводе 2:30 вылазит 90₽. Как сместить на столбец эти значения?
 
в поиск поз диапазон поиска надо задавать так же со столбца А как и таблица поиска для ВПР, так как он у вас задан со столбца В то поискпоз находит искомую позицию в первом столбце и следовательно ВПР передается указание извлечь данные из первого столбца а у нас там велосипеды
Код
=ЕСЛИОШИБКА(ВПР($J2;Тариф!$A$3:$FM$8;ПОИСКПОЗ($H2;Тариф!$A$2:$FM$2;1);0);0)
Лень двигатель прогресса, доказано!!!
 
Сергей, Спасибо большое за то, что откликнулись на просьбу! Применил формулу и всё заработало.
Можно у Вас по этой же таблице, но по другой формуле спросить или новую тему надо создавать? Одна формула осталась, которую одолеть не могу.
Изменено: zva89 - 06.05.2016 09:42:38
 
Лучше новую тему создайте
Лень двигатель прогресса, доказано!!!
Страницы: 1
Читают тему
Наверх