В моем рабочем листе я хочу рассчитать примерное время окончания процессов.
Однако я хочу ограничить это заранее определенным ограничением по времени. Так, например, когда я добавляю 4 часа к 14:00, я не хочу, чтобы результат был 18:00, но 9:00!
Предполагая рабочие дни с 8:00 до 17:00. И пропуская субботу и воскресенье
Может кто-нибудь мне помочь?
С помощью Саймона в 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