На моєму робочому аркуші я хочу обчислити очікуваний час завершення процесів.
Тим не менш, я хочу обмежити це зумовленим тимчасовим обмеженням. Так, наприклад, коли я додаю 4 години до 14:00 я не хочу, щоб результат був 18:00, але 9:00!
Припускаючи робочі дні з 8:00 до 17:00. І опускаючи суботу і неділю
Чи може хто-небудь допомогти мені?
За допомогою Simon на rcl мені вдалося адаптувати його рішення для розрахунку з хвилинами. Однак, здається, існує проблема. Коли я додаю
960 хвилин 22-05-15 16:00 функція дає правильний результат з 26-05-15 14:00
однак за одну годину додатково (60 хвилин) результат змінюється назад на 25-05-15 09:00.
Хто-небудь бачить проблему тут?
Option Explicit
Public Function EndDayTimeM(StartTime As String, Minutes As Double)
On Error GoTo Hell
' start and end hour are fixed here.
' could put them in cells and look them up
Dim startMinute As Long, endMinute As Long, startHour As Long, endHour As Long
startMinute = 480
endMinute = 960 ' was 18
startHour = 8
endHour = 16
Dim calcEnd As Date, start As Date
start = CDate(StartTime)
calcEnd = DateAdd("n", Minutes, start)
If DatePart("h", calcEnd) > endHour Or DatePart("h", calcEnd) <= startHour Then
' add 15 hours to get from 17+x to 8+x
calcEnd = DateAdd("h", 15, calcEnd) ' corrected
End If
If DatePart("w", calcEnd) = 7 Or DatePart("w", calcEnd) = 1 Then
' Sat or Sun: add 2 days
calcEnd = DateAdd("d", 2, calcEnd)
End If
If DatePart("h", calcEnd) > endHour Or DatePart("h", calcEnd) <= startHour Then
' add 15 hours to get from 17+x to 8+x
calcEnd = DateAdd("h", 15, calcEnd) ' corrected
End If
EndDayTimeM = calcEnd