Страницы: 1
RSS
Деление числа на целые минимальные части
 
Друзья, привет!
Нужна помощь с Excel.

Кейс: в течение месяца компании необходимо набрать 621 сотрудника. Сделать это необходимо равномерно. В месяце 30 дней.

Как число 621 разделить на 30 целых частей, неравные между собой, но с минимальной разницей между друг-другом? Сумма всех этих чисел в конечном итоге, само собой, должна также равняться 621.

Пример на небольшом числе 35. Дней пускай будет всего 2. Получится, что в один день наймем 18, во второй – 17.  
 
Цитата
bon_tar написал:
621 разделить на 30 целых частей, неравные между собой, но с минимальной разницей между друг-другом?
уверены в формулировке?
в результате будет например 6\7\8\9\10\11\12\13\14\15\16\17\18\19\20\21\22\23\24\25\26\2­7\28\29\31\32\33\34\35\36 . Отличная равномерность
По вопросам из тем форума, личку не читаю.
 
Добрый день.

Если я правильно понял, то это можно сделать с помощью формул ЦЕЛОЕ и ОСТАТ.
 
Скользящее округление. Если нужно набрать M сотрудников за N дней, то в i-тый день (1<=i<=N) принимаем

=ОКРУГЛ(M/N*i;0)-ОКРУГЛ(M/N*(i-1);0)
Владимир
 
bon_tar, так?
Изменено: Murderface_ - 04.09.2019 14:07:09
 
Цитата
БМВ написал:
уверены в формулировке?
Уверен :) Написал, что должны получиться числа "неравные между собой, но с минимальной разницей между друг-другом".
Ошибка моя, возможно, была в том, что не указал, какая разница в числе является критичной или не дописал, что "неравные между собой, но все с минимальной разницей между друг-другом"
 
Цитата
БМВ написал:
уверены в формулировке
Ну в общем да, вы меня подловили. Суть в том, что все числа должны быть примерно одинаковы между собой и все целые.
 
Цитата
BI Ghost написал:
Прикрепленные файлы
Пример.xlsx  (10.78 КБ)
Не нашел тут никаких формул. Я что-то не так смотрю?
 
Загрузил не тот файл.
 
bon_tar,  я не ловил, просто не вязалось у меня равномерно и все разные между собой. :-)

bon_tar, IF можно опустить
=INT($C$2/COUNT($B$3:$B$32))+(MOD($C$2;COUNT($B$3:$B$32))>B3)
у меня вот такой вариант
=ROUND(($C$1-SUM($C$2:C2))/COUNT($B3:$B$32);)
Изменено: БМВ - 04.09.2019 16:41:08
По вопросам из тем форума, личку не читаю.
 
Цитата
BI Ghost написал:
Прикрепленные файлы
Пример.xlsx  (8.53 КБ)
Тут сумма получившихся чисел получается не 621, а 620(
 
Точно. Поправить нужно в формуле на больше или равно.
Код
=ЦЕЛОЕ($C$2/СЧЁТ($B$3:$B$32))+ЕСЛИ(ОСТАТ($C$2;СЧЁТ($B$3:$B$32))>=B3;1;0)
 
Цитата
Murderface_ написал:
Прикрепленные файлы
123.xlsx  (9.2 КБ)
Да, так
Спасибо!
Но, думаю, воспользуюсь предложением от БМВ, там нет привязки к конкретным числам от 1 до 30, это мне больше подходит
 
Цитата
BI Ghost написал:
Код ? 1=ЦЕЛОЕ($C$2/СЧЁТ($B$3:$B$32))+ЕСЛИ(ОСТАТ($C$2;СЧЁТ($B$3:$B$32))>=B3;1;0)
Да, помогло, спасибо
 
Цитата
БМВ написал:
Прикрепленные файлы
Copy of пример1128.xlsx  (14.57 КБ)
Спасибо большое!
 
Правильно ли я понимаю, что Вам требуется сгенерировать n целых чисел вида 1+ОТБР(S/(n+m);0) и m целых чисел вида ОТБР(S/(n+m);0) таких чтобы выполнялись два условия: n+m=D (заданное целое число дней) и n+(n+m)*ОТБР(S/(n+m);0)=S (заданное целое число сотрудников).

Тогда очевидно, что n=S-D*ОТБР(S/D;0), а m=D*(1+ОТБР(S/D;0))-S

Попробуйте адаптировать для своих нужд такую формулу (записанную в горизонтальной строке, начиная с первого столбца):
=(ОТБР(S/D;0)+1*(СТОЛБЕЦ()<=(S-D*ОТБР(S/D;0))))*(СТОЛБЕЦ()<=D)
которая вернет n левых чисел равных 1+ОТБР(S/D;0), следующие m чисел равных ОТБР(S/D;0) и остальные 0

В том случае, если необходимо оставить несколько свободных столбцов слева, используйте выражение СТОЛБЕЦ()-константа вместо СТОЛБЕЦ()
Если же Вам требуется вертикальный столбец чисел, то вместо СТОЛБЕЦ() используйте формулу СТРОКА()
Страницы: 1
Наверх