Страницы: 1
RSS
подбор пакета по размеры
 
Доброго времени!
Есть плоский объект, размеры указаны в двух столбцах.
Есть пакет, размеры так же указаны.

Как подобрать ближайший подходящий в желтую ячейку (указать только название из столбца A)?:)
Подскажите, пожалуйста, какую функцию использовать.

Начал через Если, но запутался, наверняка есть красивее функция
Изменено: mapatka - 13.09.2022 17:10:33
 
Цитата
mapatka написал:
наверняка есть красивее функция
Есть, но понятнее ли она?
Массивная, при условии что длинна всегда больше ширины
=INDEX(A:A;MOD(MIN(IF((B3<=$B$11:$B$27)*(C3<=$C$11:$C$27);$B$11:$B$27*$C$11:$C$27+ROW($B$11:$B$27)%));1)/1%+0,1)

если нужно крутить , то чуть добавим
=INDEX(A:A;MOD(MIN(IF((B3<=$B$11:$B$27)*(C3<=$C$11:$C$27)+(C3<=$B$11:$B$27)*(B3<=$C$11:$C$27);$B$11:$B$27*$C$11:$C$27+ROW($B$11:$B$27)%));1)/1%+0,1)
По вопросам из тем форума, личку не читаю.
 
Код
D3    =ЕСЛИОШИБКА(ИНДЕКС($A$11:$A$27;ПОИСКПОЗ(0;$D$11:$D$27;1)+1);"")
D4    =ЕСЛИОШИБКА(ИНДЕКС($A$11:$A$27;ПОИСКПОЗ(0;$E$11:$E$27;1)+1);"")
D5    =ЕСЛИОШИБКА(ИНДЕКС($A$11:$A$27;ПОИСКПОЗ(0;$F$11:$F$27;1)+1);"")
D6    =ЕСЛИОШИБКА(ИНДЕКС($A$11:$A$27;ПОИСКПОЗ(0;$G$11:$G$27;1)+1);"")
D11:D27    =($B11>$B$3)*($C11>$C$3)*($B11*$C11-$B$3*$C$3)
E11:E27    =($B11>$B$4)*($C11>$C$4)*($B11*$C11-$B$4*$C$4)
F11:F27    =($B11>$B$5)*($C11>$C$5)*($B11*$C11-$B$5*$C$5)
G11:G27    =($B11>$B$6)*($C11>$C$6)*($B11*$C11-$B$6*$C$6)
 
БМВ, логику бы понять.
Больше 100 строк не работает.

=ИНДЕКС(A:A;ОСТАТ(МИН(ЕСЛИ((B3<=$B$89:$B$105)*(C3<=$C$89:$C$105);$B$89:$B$105*$C$89:$C$105+СТРОКА($B$89:$B$105)%));1)/1%+0,1)
 
МатросНаЗебре, я или совсем отупел или чего то не понимаю, это куда вставить?  :(  
 
mapatka, Вам МатросНаЗебре слева указал адреса/диапазоны ячеек, куда вставлять формулы.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
В ячейку D3 вставляете формулу
Код
=ЕСЛИОШИБКА(ИНДЕКС($A$11:$A$27;ПОИСКПОЗ(0;$D$11:$D$27;1)+1);"")

и т.д.
 
Цитата
mapatka написал:
Больше 100 строк не работает.
$B$89:$B$105 это не 100 строк. Смотрите на диапазоны в формуле, сместили явно.
По вопросам из тем форума, личку не читаю.
 
МатросНаЗебре, понял, благодарю, вроде работает :) сейчас попробую масштабировать.

Я предполагал, что надо какую то промежуточную таблицу сделать, но додуматься не смог. Интересная логика.

Еще раз спасибо!
Изменено: mapatka - 13.09.2022 18:00:24
 
БМВ, тупо вставляю строки в ваш пример
 
Цитата
mapatka написал:
тупо вставляю строки в ваш пример
вот не надо тупо. или прикладывайте файл или ....
По вопросам из тем форума, личку не читаю.
 
Цитата
написал:
вот не надо тупо. или прикладывайте файл или ....
 
кто ж знал что у вас такие потребности. добавьте и там и там по %, то есть было % станет %% будет работать до 9999 строк. Нужно больше  то еще один.
По вопросам из тем форума, личку не читаю.
 
БМВ, благодарю! Пожалуйста, опишите логику, хотя бы примерно :) Чтобы в будущем иметь в виду
 
так все не сложно, я б даже сказал я перебдил, сейчас поясню в чем в п.2.
1.чтоб уместить в  пакет,  в общем случае должно выполнится условие , что оба габарита меньше чем габариты пакета, при этом длина и ширина могут меняться местами
(B3<=$B$11:$B$27)*(C3<=$C$11:$C$27)+(C3<=$B$11:$B$27)*(B3<=$C$11:$C$27) . Если разворот не нужен, а такое бывает например когда в трех измерениях не кантовать и верх, должен быть верхом. то проще (B3<=$B$11:$B$27)*(C3<=$C$11:$C$27)
2 Если условие выполняется, то есть <>o то пакет подходит . По идее можно взять просто номер строки, но может же  быть что пакет следующий идет не сортированным, по этому беру площадь пакета и
3 прибавляем к нему номер строки деленный на 10000 ( %% это просто запись /100/100 что дает /10000.)
4. далее срабатывает MIN который пропуская ложь выдает минимальное число по площади с номеров строки.
5. отделяем от него дробную часть.
6 Делим на 1%% что равносильно *10000 или *10^4 но просто короче. что дает нам номер строки.
7. +0,1 э то на всякий случай, после всех этих предыдущих операций может случится что будет не 22 например а 21,(9) что будет потом воспринято как 21, а не как 22 строка.
8. Ну и берем через индекс по номеру строки наименование пакета.
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх