Страницы: 1
RSS
Пропорциональное распределение между отделами
 
Добрый вечер!
Друзья, нужна ваша помощь.
В наличии есть 200 мешков, которые необходимо распределить пропорционально среди отделов.
В зависимости от численности персонала в отделе - отдел получает необходимое количество мешков.
Например:
если в отделе1 численность 127 человек им необходимо выдать 39 мешков
если в отделе2 численность 12 человек значит им необходимо выдать 3 мешка
если в отделе3 численность 22 человека значит им 6 мешков
в отделе4 численность 37 значит им 10 мешков
и т.д.

В прикрепленном файле распределил в ручную, но нужна формула, т.к. количество мешков для распределения и количество людей в отделах регулярно меняется.
Заранее благодарю!
 
не понятно почему 39?
=ROUND(200*G8/SUM($G$8:$G$23);0) , но как делить мешки если будет нехватка или избыток?
По вопросам из тем форума, личку не читаю.
 
БМВ,

39 - это для примера.
В этом то и задача, чтобы распределить пропорционально, чтобы на складе ничего не осталось.

 
=ОКРУГЛ($I$5*G8/СУММ($G$8:$G$23);0)
и последний
=I5-СУММ(I8:I22)
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
office.taes написал:
=ROUND(200*G8/SUM($G$8:$G$23);0)
Привет, Михаил.
Халтурим? :-)  Уж сколько раз Владимир показывал этот нехитрый приём.
 
buchlotnik, всё работает как надо.
Это, то что было нужно!
Большое спасибо!
 
Андрей VG, не совсем понял Ваше сообщение.
Если что я Сергей, а не Михаил.  
 
Цитата
office.taes написал:
всё работает как надо
Точно? Вы находите, что так пропорциональненько? :)
 
Андрей VG, согласен, Ваш вариант распределяет поточнее, или попропорциональней , я бы сказал посправедливей. Но это заметно только при одинаковом количестве персонала по всем отделам, а  так заметить неточность почти не возможно.
Благодарю за проявленный интерес и настойчивость 👍
 
Цитата
Андрей VG написал:
Халтурим? :-)  
Андрей, я когда писал
Цитата
БМВ написал:
но как делить мешки если
подразумевал  - какая задача.  а 39 сбивало с толку совсем :-)
По вопросам из тем форума, личку не читаю.
 
Цитата
office.taes написал:
аметно только при одинаковом количестве персонала по всем отделам
Ну, давайте сделаем не одинаковое :)   Устроит? Как мешки с Отдела 16 будете выбивать?
Изменено: Андрей VG - 14.02.2020 23:58:21
 
Цитата
office.taes написал:
Андрей VG , согласен, Ваш вариант распределяет по точнее, или по пропорциональней , я бы сказал по справедливей.
Для себя принимаю Ваш вариант.

Цитата
Андрей VG написал:
Как мешки с Отдела 16 будете выбивать?
Выбивать не будем, но будем правильно распределять.
Спасибо за отличный пример!  
 
Цитата
office.taes написал:
отличный пример!
Вот вам ещё пример, о том, как возникают слухи о любимчиках :)
 
=ОКРУГЛ(G8/СУММ(G8:G$23)*($I$5-СУММ($I$7:I7)) ; )
Изменено: buchlotnik - 15.02.2020 00:18:56
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
Андрей VG написал:
о любимчиках
ну да, при меньшей численности больше мешков.
Это уже беспредел :)
 
buchlotnik, спасибо!
 
кстати о пропорциональности - накидал тестовый стендик, за меру взял сумму квадратов разностей % численности и % распределенных мешков - в 95,6% случаев (на 999999 итераций) у меня выходит "пропорциональнее"  ;)
Соблюдение правил форума не освобождает от модераторского произвола
 
buchlotnik, ого расчёт. КРУТО!
Для бухгалтерии будет отличное обоснование почему распределение произошло именно так. Супер!
 
Цитата
buchlotnik написал:
у меня выходит "пропорциональнее"
Михаил - это вполне логично ОКРУГЛ(1,99) = 2, а ЦЕЛОЕ(1,99) = 1. Вот фиг его знает, с чего я решил использовать ЦЕЛОЕ, а не ОКРУГЛ - сошлись бы :)
 
Цитата
Андрей VG написал:
сошлись бы
проверил - не-а, всё равно выходят различные решения - формулы генерят лучшее решение:
=ОКРУГЛ(C10/СУММ(C10:C$23)*($E$5-СУММ($E$7:E9)); ) - 87,7% случаев
=ОКРУГЛ($E$5*СУММ($C$7:C10)/СУММ($C$8:$C$23)-ОКРУГЛ($E$5*СУММ($C$7:C9)/СУММ($C$8:$C$23); ); ) - 13,9% случаев
=ЦЕЛОЕ($E$5*СУММ($C$7:C10)/СУММ($C$8:$C$23)-ЦЕЛОЕ($E$5*СУММ($C$7:C9)/СУММ($C$8:$C$23))) - 5,8% случаев
в сумме больше 100% потому что решения могут совпадать (развертку на 10000 итераций приложил)
Изменено: buchlotnik - 15.02.2020 09:57:46
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
buchlotnik написал:
87,7% случаев
Михаил, сражён наповал. Доказали. Спасибо!
 
Но все равно все три могут давать лучший результат - вопрос оптимальной формулы открыт  :)
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
buchlotnik написал:
вопрос оптимальной формулы открыт
Боюсь, тут уже VBA только, ну или светило, типа медведя :)  Всё же не совсем согласен ставить идеальность от весов количества человек в подразделении. Я бы предложил минимизировать сумму абсолютных отклонений от весового распределения в дробных числах.
Поясню, пусть это не 200 мешков, а 200 килограмм. Тогда справедливым распределением было бы каждому человеку поровну вплоть по пикограмм, можно и до нанограмм и даже с точностью плюс/минус молекулы :)  Логично?
Тогда оптимальным решением было бы =$E$5*C8/СУММ($C$8:$C$23). Но, в нашей задаче требуется целочисленное решение.
Тогда находим первое приближение =ОКРУГЛ($E$5*C8/СУММ($C$8:$C$23);).
Теперь, если имеем избыток по суммам мешков при таком распределении. Находим отклонение от оптимального решения и уменьшаем число мешков где отрицательное отклонение максимально близко к -0,5
Если имеем недостаток, то увеличиваем на 1 там, где отклонение максимально близко к 0,5
Тем самым получим минимум суммы абсолютных отклонений по полученным мешкам.
Либо, как гипотеза, добавляем убавляем мешок у тех подразделений у которых после изменения числа мешков будет минимальное изменение: количество мешков / количество людей в подразделении.
Но тут мы попадём в зависимость от больших по количеству отделов. Логично, что менять число мешков следует у тех отделов, у которых максимальное количество людей.
Изменено: Андрей VG - 15.02.2020 13:25:06
 
Тоже к модулям пришёл. Но всё равно где-то недочётик - эффективнее предыдущей только в 95% случаев (и по модулям отклонений, и по квадратам) :
Скрытый текст
Изменено: buchlotnik - 15.02.2020 17:19:04
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
buchlotnik написал:
эффективнее предыдущей только в 95% случаев (и по модулям отклонений, и по квадратам) :
Спасибо, но, думаю дальше, уже лучше или Power Query или VBA.
 
Согласен, слишком громоздко выходит, и это при том, что в тестовом примере средняя сумма абсолютных отклонений снизилась с 5,7 (формула с ЦЕЛ) до 4,1 (последний монстрик) - выигрыш 28%, а геморроя...
Изменено: buchlotnik - 15.02.2020 19:53:52
Соблюдение правил форума не освобождает от модераторского произвола
Страницы: 1
Наверх