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

Количество столбцов результата ограничены минимальной датой начала и максимальной датой окончания периода.
Трудозатраты надо раскидывать равномерно по кол-ву недель с округлением до сотой, если разделить не получается(например 10 на 3), то большую часть относить на последнюю неделю (1 неделя - 3,33, 2 неделя - 3,33, 3 неделя - 3,34).

Пример файла прикладываю.
  Лист данные - так данные приходят на вход.
  Лист результат - так данные должны выглядеть.

Возможно есть примеры какие-то с макросами, как такое преобразование можно сделать? Т.к. сейчас даже тяжело понять, с чего лучше начать
Изменено: Geocub9000 - 13.09.2024 17:41:04
 
Добрый день!
Я похожее делал в UDF - сперва высчитывал затраты на день, затем суммировал в какую неделю сколько попадает.
В целом всё просто, больше возни как перевести эти ваши
Неделя 35 Неделя 36
в реальные периоды времени.
И если ваша версия поддерживает динамические диапазоны - такие UDF применять как по мне очень вкусно/
 
Код
у вас какая версия эксель?
Изменено: online - 13.09.2024 18:18:54
 
Geocub9000, если знаете что такое UDF и готовы применять (от безвыходности например )) ) то вот готово:


P.S. Сейчас проверил - может косячить на начало/конец года, вернее дело в интерпретации.
Например первая неделя 2025-го года тут считается с 06.01.2025, а 53-я 2024 с 30.12.2024, и поэтому работа в самом начале 2025-го года запишется в 53-ю неделю 2024.
Рекомендую на стыке годов добавить столбец с последней неделей предыдущего года (53-й для UDF) и считать что попадает туда, или/и скорректировать в коде или аргументе чтоб в середине года недели считались так как заведено у Вас в компании.
Изменено: Hugo - 13.09.2024 19:58:50
 
Цитата
Geocub9000:    с округлением до сотой, если разделить не получается(например 10 на 3), то большую часть относить на последнюю неделю
а меньшую часть? )
вариант:
=ЕСЛИ(МАКС(ИНДЕКС((Данные!$A$2:$A$5=$A2)*НОМНЕДЕЛИ.ISO(Данные!$E$2:$E$5); ))-ПРАВБ(B$1;2);ОКРУГЛ(СУММПРОИЗВ((Данные!$A$2:$A$5=$A2)*(НОМНЕДЕЛИ.ISO(Данные!$D$2:$D$5)-ПРАВБ(B$1;2)<=0)*(НОМНЕДЕЛИ.ISO(Данные!$E$2:$E$5)-ПРАВБ(B$1;2)>=0)*Данные!$C$2:$C$5/(Данные!$E$2:$E$5-Данные!$D$2:$D$5+3))*7;2);СУММЕСЛИ(Данные!$A$2:$A$5;$A2;Данные!$C$2:$C$5)-СУММ($A2:A2))
 
Добавил ещё один вариант UDF, мне он нравится больше.
Проблема на стыке годов - к какой неделе какого года относить данные за эти дни.
В первой версии это делает функция в коде.
Во второй версии используется НОМНЕДЕЛИ(дата;2)
Но работу обе раскидывают не равномерно, а согласно указанных дней - если на неделю выпадает 1 день, то столько работы и будет.
Страницы: 1
Наверх