अपनी वर्कशीट में, मैं प्रक्रियाओं के अनुमानित अंत समय की गणना करना चाहता हूं।
हालाँकि, मैं इसे पूर्वनिर्धारित समय की कमी के लिए प्रतिबंधित करना चाहता हूँ। इसलिए उदाहरण के लिए, जब मैं 4 घंटे 14:00 तक जोड़ता हूं, तो मैं नहीं चाहता कि परिणाम 18:00 हो, लेकिन 9:00!
8:00 - 17:00 के कार्य दिवसों को मानते हुए। और शनिवार और रविवार को छोड़ देना
क्या कोई मेरी मदद कर सकता है?
आरसीएल में साइमन की मदद से मैं मिनटों के साथ गणना करने के लिए अपने समाधान को अनुकूलित करने में कामयाब रहा। हालांकि, वहाँ एक समस्या होने लगती है। जब मैं जोड़ता हूं
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