Уважаемые форумчане, окажите пожалуйста, помощь, в решении следующей задачи:
К примеру - в компании 100 человек, с количеством отпускных дней в году по 70 - по 2 отпуска 35 к.д. Есть условие по квоте отсутствующих человеко-дней в месяце (% определен от состава численности, в году составляет 237 %, т.к. количество дней отпуска больше чем дней в месяце). В отпуск людей необходимо отправлять равномерно в течении всего месяца. Как при таких условиях высчитать количество людей которых можно отпустить в отпуск в тот или иной месяц в зависимости от установленных квот? У меня решения нет, поэтому обращаюсь за вашей высококвалифицированной помощью, какую формулу нужно применить, дабы определиться в подсчетах. Во вложении табличка, как бы мечталось это реализовать.
Уважаемые форумчане, окажите пожалуйста, помощь, в решении следующей задачи:
К примеру - в компании 100 человек, с количеством отпускных дней в году по 70 - по 2 отпуска 35 к.д. Есть условие по квоте отсутствующих человеко-дней в месяце (% определен от состава численности, в году составляет 237 %, т.к. количество дней отпуска больше чем дней в месяце). В отпуск людей необходимо отправлять равномерно в течении всего месяца. Как при таких условиях высчитать количество людей которых можно отпустить в отпуск в тот или иной месяц в зависимости от установленных квот? У меня решения нет, поэтому обращаюсь за вашей высококвалифицированной помощью, какую формулу нужно применить, дабы определиться в подсчетах. Во вложении табличка, как бы мечталось это реализовать.Профан
dude, я конечно вообще пока ничего не поняла(( но завтра обязательно постараюсь разобраться! Если будет возможно немного описать логику, было просто замечательно! Но на первый взгляд результат верный, но не понимаю, каким путём к нему дойти. (Результат делю на дни получаю процент от кол-ва людей, если в сумме, то почти 200 - как раз 2 отпуска - правильно я поняла?)
И спасибо за проделанную работу!!! Спасибо за время и помощь!
dude, я конечно вообще пока ничего не поняла(( но завтра обязательно постараюсь разобраться! Если будет возможно немного описать логику, было просто замечательно! Но на первый взгляд результат верный, но не понимаю, каким путём к нему дойти. (Результат делю на дни получаю процент от кол-ва людей, если в сумме, то почти 200 - как раз 2 отпуска - правильно я поняла?)
И спасибо за проделанную работу!!! Спасибо за время и помощь!Профан
Сегодня села за таблицу и как ни силилась понять ее так и не смогла. Думаю, ну ладно пусть мне не понятно главное сейчас на результат, а потом разберусь, буду просто подставлять новые значения, но к сожалению результат не сходится. Я прошу прощения за мою назойливость, но пока решения в приложенных вариантах не увидела ((((
dude, добрый день!
Сегодня села за таблицу и как ни силилась понять ее так и не смогла. Думаю, ну ладно пусть мне не понятно главное сейчас на результат, а потом разберусь, буду просто подставлять новые значения, но к сожалению результат не сходится. Я прошу прощения за мою назойливость, но пока решения в приложенных вариантах не увидела ((((Профан
самая верх таблица, да, вспомогательная, для расчета дня месяца поправки осн таблица - это не график ухода в отпуск, а люди в отпуске поправка делается на начало месяца из-за удобства, на самом деле числа в начале месяца это люди с прошлых месяцев, которые "сублимируются" из-за этой поправки также представил альтернат расчет на 100%, а не 240% и см лист предлож каждый след год считается на основе предыдущего уходы в дни месяца заполняются в ручную (один раз в год допустимо), нижеслед формула считает чел-дни с дня ухода в отпуск со всех предыд месяцев и текущего [vba]
Код
Function schet(dn As Date, dk As Date, d As Range) As Integer Dim i&, j&, jj&, m&, y&, dd& Dim dm() If d.Columns.Count <> 31 Then schet = "error": Exit Function ReDim dm(1 To d.Rows.Count, 1 To 31) dm = d dd = Day(dk) m = Month(dn) y = Year(dn) For i = 1 To UBound(dm) For j = 1 To 31 For jj = 0 To 34 'изменить если отпуск не 35 дней 'в случае увеличения отпуска до более 60 дней увеличить на 1 "3" в след строке If dm(i, j) > 0 And UBound(dm) - i < 3 Then If DateSerial(y, m - UBound(dm) + i, j) + jj >= dn And DateSerial(y, m - UBound(dm) + i, j) + jj <= dk Then schet = schet + dm(i, j) End If End If Next jj, j, i End Function
[/vba]
самая верх таблица, да, вспомогательная, для расчета дня месяца поправки осн таблица - это не график ухода в отпуск, а люди в отпуске поправка делается на начало месяца из-за удобства, на самом деле числа в начале месяца это люди с прошлых месяцев, которые "сублимируются" из-за этой поправки также представил альтернат расчет на 100%, а не 240% и см лист предлож каждый след год считается на основе предыдущего уходы в дни месяца заполняются в ручную (один раз в год допустимо), нижеслед формула считает чел-дни с дня ухода в отпуск со всех предыд месяцев и текущего [vba]
Код
Function schet(dn As Date, dk As Date, d As Range) As Integer Dim i&, j&, jj&, m&, y&, dd& Dim dm() If d.Columns.Count <> 31 Then schet = "error": Exit Function ReDim dm(1 To d.Rows.Count, 1 To 31) dm = d dd = Day(dk) m = Month(dn) y = Year(dn) For i = 1 To UBound(dm) For j = 1 To 31 For jj = 0 To 34 'изменить если отпуск не 35 дней 'в случае увеличения отпуска до более 60 дней увеличить на 1 "3" в след строке If dm(i, j) > 0 And UBound(dm) - i < 3 Then If DateSerial(y, m - UBound(dm) + i, j) + jj >= dn And DateSerial(y, m - UBound(dm) + i, j) + jj <= dk Then schet = schet + dm(i, j) End If End If Next jj, j, i End Function