Здравствуйте, столкнулся с некой логистической задачей, не могу придумать как ее решить В приложении файл с примером.
В колонке AY - объем (m3), который занимает артикул (одна строка один артикул) В колонке AW - пары артикулов, которые нужно положить вместе в один контейнер В колонке H нужно проставить номер упакованного контейнера - 1,2 и тд.
Контейнер считается заполненным, когда в сумме объем достигает от 67 до 70,5 m3 Если пара (например pair 1) занимает объем меньший чем 67 m3 то соответственно в этот контейнер можно положить другие пары, е а так же артикула без пар, если в сумме объме не будет превышать 70,5 Если пара (например pair 10) занимает в сумме обьъем больше чем 70,5 то в таком случае ее нужно разбить на 2 контейтера, добавив соответственно артикулов до объема от 67 до 70,5
Очень надеюсь что вы сможете помочь мне с этим.
Здравствуйте, столкнулся с некой логистической задачей, не могу придумать как ее решить В приложении файл с примером.
В колонке AY - объем (m3), который занимает артикул (одна строка один артикул) В колонке AW - пары артикулов, которые нужно положить вместе в один контейнер В колонке H нужно проставить номер упакованного контейнера - 1,2 и тд.
Контейнер считается заполненным, когда в сумме объем достигает от 67 до 70,5 m3 Если пара (например pair 1) занимает объем меньший чем 67 m3 то соответственно в этот контейнер можно положить другие пары, е а так же артикула без пар, если в сумме объме не будет превышать 70,5 Если пара (например pair 10) занимает в сумме обьъем больше чем 70,5 то в таком случае ее нужно разбить на 2 контейтера, добавив соответственно артикулов до объема от 67 до 70,5
Очень надеюсь что вы сможете помочь мне с этим.vlad0912
китин, задачи похожи, но тем не менее не идентичны. В уровне VBA не дошел еде до уровня написания таких сложных алгоритмов, поэтому надеюсь на помощь с написанием кода) Заранее благодарю гениального человека.
китин, задачи похожи, но тем не менее не идентичны. В уровне VBA не дошел еде до уровня написания таких сложных алгоритмов, поэтому надеюсь на помощь с написанием кода) Заранее благодарю гениального человека.vlad0912
Как-то так. Наверное можно и оптимальнее, но для поиска решений - очень много переменных - не вытянул. Поэтому формулами. Обратите внимание на сортировку.
Как-то так. Наверное можно и оптимальнее, но для поиска решений - очень много переменных - не вытянул. Поэтому формулами. Обратите внимание на сортировку.SLAVICK
SLAVICK, огромное спасибо, это что-то невероятное!) Выглядит очень круто, жалко пока не могу ничего понять)
Все правильно считается, условия сюблюдаются, просто бомба. Единственное, не соблюдаеатся одно условие, что в случае если объем не дотягивает до 67 m3, то номер контейнера всеравно проставляется (как например контейнер 13 и 14), хотя в этом случае он не должен заполнять контейнер, так как он не укладывается по объему.
+ таблица с данными будет постоянно изменяться, и все вплоть до той таблицы, которую я изначально приложил, считается при помощи макроса (удаляются лишние строки, выделяются пары артикулов и тд). То есть все столбцы будут распологаться в том же порядке что и сейчас, но данные о парах, объемах и тд всегда будут разные.
Я знаю что количетсво строк в любом случае не будет превышать 20 000, и можно было бы допустим оставить страницу с формулами перед запуском макроса как бы на отдельной вкладке (например SHEET(FORMULA) где формула начинается с колонки BB в данном случае, а когда он прокручивает его до финального шага он бы копировал просто хаполненный массив данных во вкладку formula и все бы считалось. Как сделать чтобы это работало таким образом?
SLAVICK, огромное спасибо, это что-то невероятное!) Выглядит очень круто, жалко пока не могу ничего понять)
Все правильно считается, условия сюблюдаются, просто бомба. Единственное, не соблюдаеатся одно условие, что в случае если объем не дотягивает до 67 m3, то номер контейнера всеравно проставляется (как например контейнер 13 и 14), хотя в этом случае он не должен заполнять контейнер, так как он не укладывается по объему.
+ таблица с данными будет постоянно изменяться, и все вплоть до той таблицы, которую я изначально приложил, считается при помощи макроса (удаляются лишние строки, выделяются пары артикулов и тд). То есть все столбцы будут распологаться в том же порядке что и сейчас, но данные о парах, объемах и тд всегда будут разные.
Я знаю что количетсво строк в любом случае не будет превышать 20 000, и можно было бы допустим оставить страницу с формулами перед запуском макроса как бы на отдельной вкладке (например SHEET(FORMULA) где формула начинается с колонки BB в данном случае, а когда он прокручивает его до финального шага он бы копировал просто хаполненный массив данных во вкладку formula и все бы считалось. Как сделать чтобы это работало таким образом?vlad0912
То есть все столбцы будут распологаться в том же порядке что и сейчас, но данные о парах, объемах и тд всегда будут разные
Это не страшно - главное выполнить сортировку от Я до А по объему - а потом от Я до А по парам. Также нужно менять количество столбцов справа таблицы - увеличивая их количество до количества нужных контейнеров + запас. количества нужных контейнеров = Сколько контейнеров нужно для 20000 товаров из расчета:
Код
количества нужных контейнеров = сумма объема всех товаров / 70,5
Запас - произвольная величина - если честно даже не знаю сколько контейнеров нужно запаса для 20000 товаров .
а когда он прокручивает его до финального шага он бы копировал просто хаполненный массив данных во вкладку formula и все бы считалось
Проще всего создать копию этого листа и просто вставлять данные в левую часть, потом сортировать , потом протягивать формулы до последней строки. Количество столбцов для контейнеров нужно или сразу поставить с запасом(Если будет очень много - возможны тормоза), или макросом протягивать.
То есть все столбцы будут распологаться в том же порядке что и сейчас, но данные о парах, объемах и тд всегда будут разные
Это не страшно - главное выполнить сортировку от Я до А по объему - а потом от Я до А по парам. Также нужно менять количество столбцов справа таблицы - увеличивая их количество до количества нужных контейнеров + запас. количества нужных контейнеров = Сколько контейнеров нужно для 20000 товаров из расчета:
Код
количества нужных контейнеров = сумма объема всех товаров / 70,5
Запас - произвольная величина - если честно даже не знаю сколько контейнеров нужно запаса для 20000 товаров .
а когда он прокручивает его до финального шага он бы копировал просто хаполненный массив данных во вкладку formula и все бы считалось
Проще всего создать копию этого листа и просто вставлять данные в левую часть, потом сортировать , потом протягивать формулы до последней строки. Количество столбцов для контейнеров нужно или сразу поставить с запасом(Если будет очень много - возможны тормоза), или макросом протягивать.
vlad0912, Вот мой вариант. Он не оптимальный и не учтены некоторые особенности ТЗ - Если пара превышать 70,5 - ничего не происходит - Объемы без пар, которые никуда не попали в пары, останутся нераспределенными
vlad0912, Вот мой вариант. Он не оптимальный и не учтены некоторые особенности ТЗ - Если пара превышать 70,5 - ничего не происходит - Объемы без пар, которые никуда не попали в пары, останутся нераспределеннымиmiver
miver, Так не совсем корректно - по Вашему макросу нужно аж 16 контейнеров - у меня по файлу влазит в 14 Если есть желание - можете взять мой алгоритм и подкорректировать свой макрос с его учетом
miver, Так не совсем корректно - по Вашему макросу нужно аж 16 контейнеров - у меня по файлу влазит в 14 Если есть желание - можете взять мой алгоритм и подкорректировать свой макрос с его учетом SLAVICK
miver, SLAVICK, Тут так много контейнеров получилось, потому что не соблюлось условие что минимальная загрузка контейнера должна составлять 67, максимальная 70,5 соблюдается. Помогите пожалуйста подкорректировать макрос учитывая этот комментарий, пожаалуйста!
miver, SLAVICK, Тут так много контейнеров получилось, потому что не соблюлось условие что минимальная загрузка контейнера должна составлять 67, максимальная 70,5 соблюдается. Помогите пожалуйста подкорректировать макрос учитывая этот комментарий, пожаалуйста!vlad0912
miver, все это очень круто, но к сожалению не до конца верно работает( так, к примеру, у нас собирается контейнер 14, который в сумме занимает объем 44 (по идее он не должен собираться, так как его объем меньше 67 в сумме и поле должно оставаться пустым), имея при этом небольшие объемы (0,60 и 0,71), которые влезли бы например в догонку в контейнер 11.
Сможете помочь с этим?
miver, все это очень круто, но к сожалению не до конца верно работает( так, к примеру, у нас собирается контейнер 14, который в сумме занимает объем 44 (по идее он не должен собираться, так как его объем меньше 67 в сумме и поле должно оставаться пустым), имея при этом небольшие объемы (0,60 и 0,71), которые влезли бы например в догонку в контейнер 11.