Страницы: 1
RSS
Поиск ближайшего меньшего числа в списке, соответствующего поисковому значению
 
Уважаемые форумчане!

Помогите пожалуйста решить следующую задачу. Для некоего значения есть соответствующее ему случайное число. Далее есть список данных значений (ограниченный конкретным ограниченным набором значений). Для данного списка, для каждого значения, есть несколько ограниченных соответствующих ему чисел. Необходимо для данного значения и случайного числа (см. мое 2 предложение) подобрать из списка число, соответствующее указанному значению, не большее этого случайного числа и максимально близкое ему.

Обращаю внимание, что в списке у одного значения может быть несколько чисел, при том они могут повторяться для других значений.

Извините, что выражаюсь, возможно, туманно. В прилагаемом файле на конкретных числах будет, надеюсь, понятнее.
 
Для Excel 2021+
Код
=МАКС(ФИЛЬТР($B$13:$B$20;($A$13:$A$20=A4)*(B13:B20<=B4)))
=МАКСЕСЛИ($B$13:$B$20;$A$13:$A$20;A4;$B$13:$B$20;"<="&B4)
Согласие есть продукт при полном непротивлении сторон
 
Код
=ИНДЕКС(СМЕЩ(B12;ПОИСКПОЗ(A4;A13:A20;0);0;СЧЁТЕСЛИМН(A13:A20;A4);1);ПОИСКПОЗ(B4;СМЕЩ(B12;ПОИСКПОЗ(A4;A13:A20;0);0;СЧЁТЕСЛИМН(A13:A20;A4);1);1))
Несколько архаичный вариант)
 
Цитата
МатросНаЗебре написал: архаичный вариант
Универсальный вариант) (UDF)
Скрытый текст
Согласие есть продукт при полном непротивлении сторон
 
Пожалуй, вариант с МАКСЕСЛИ наиболее простой и удобный.

Всем большое спасибо!
 
вариант (ф-ла массива)
=ВПР($B$4;
($A$13:$A$22=$A$4)*$B$13:$B$22;
1)

и похожее по сути (тоже ф-ла массива)
=ИНДЕКС($B$13:$B$22;ПОИСКПОЗ($B$4;($A$13:$A$22=$A$4)*$B$13:$B$22;1))

PS при переборе значения в А4 (группа) - формулы дали разные рез-ты. При значении группы 3 в таблице нет вариантов меньше указанного 36
ВПР выдал 0, ИНДЕКС выдал 40... Если же в заданной таблице есть корректное значение - все дают верный результат.

еще вариант (массив)
=НАИБОЛЬШИЙ((((B4-B13:B23)*(A13:A23=A4))>0)*$B$13:$B$23;1)
дает верный ответ при выполнении условий во всех группах, при невыполнении - дает 0.
Изменено: ВовавВова - 04.03.2026 13:08:18
познакомился с Excel
 
Вариант.
Код
=СУММПРОИЗВ(МАКС(($A$13:$A$20=$A$4)*($B$13:$B$20<=$B$4)*$B$13:$B$20))
 
при условии что данные сортированы как в примере
=LOOKUP(B4;B13:B20/(A4=A13:A20))
Изменено: БМВ - 05.03.2026 07:34:01
По вопросам из тем форума, личку не читаю.
Страницы: 1
Читают тему
Наверх