Как получить время ответа на ремонт в выходные и нерабочее время?

Я работаю над этим проектом некоторое время, и у меня ничего не получается, поэтому я решил, что спрошу вас, ребята. Есть несколько задач: цитирование, привязка, выдача ... и каждая из них имеет собственное время ответа.

Котировка должна быть произведена в течение 3 часов, привязка - 8 часов, а срок оформления - 2 дня. Но проблема в том, что время ответа основано только на времени с 9:00 до 20:00 (расчетное время), исключая выходные и праздничные дни. У меня есть справочная таблица по праздникам, а также время выполнения задач, проиндексированных из другой справочной таблицы.

Часть, в которой я застрял, связана с «остановкой часов» и переводом времени ответа задачи на следующий день, если это после 8:00 вечера.

Это формула, которую я создал для этого, но она не работает должным образом, потому что она будет показывать то же время, если я изменил Time на (48,0,0) для выдачи или Time (8,0,0) для привязки. . В столбце P3 указано время начала.

=IF(AND(TEXT(P3,"dddd") = "Friday",HOUR(P3)+MINUTE(P3)/60+SECOND(P3)/(60*60)>17),P3+TIME(15,0,0)+DAY(2),IF(HOUR(P3)+MINUTE(P3)/60+SECOND(P3)/(60*60)>17,P3+TIME(15,0,0),P3+Time(3,0,0)))

Спасибо! Любая помощь будет принята с благодарностью, ребята!

Звучит как очень сложная вещь в Excel! Можете ли вы использовать пользовательскую функцию VBA? Это потребует, чтобы книга была книгой с поддержкой макросов.

Josh Jay 09.08.2018 19:58

Да, @JoshJay, но я новичок, когда дело доходит до VBA, но я пытаюсь изучить функции, а также продолжаю искать идеи в Интернете

roberth 09.08.2018 21:31
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
1
2
145
1

Ответы 1

Вот вам для начала непроверенный и не полностью реализованный код:

Function GetTurnaroundDateAndTime(TaskType As String, StartTime As Date, TaskTimeRange As Range, HolidayLookupRange As Range)
    Dim taskTime As Double
    Dim dayBegin As Double 'could be a parameter
    Dim dayEnd As Double 'could be a parameter
    Dim result As Date
    Dim isValid As Boolean
    Dim offset As Double

    dayBegin = 9 'could be a parameter
    dayEnd = 20 'could be a parameter
    offest = 0

    'Get Task Time in hours
    taskTime = GetTaskTime(TaskType, TaskTimeRange)

    'Calculate initial turnaround time (without regard to nights/weekends/holidays)
    result = DateAdd("h", taskTime + offset, StartTime)

    'check if it's a valid turnaround date and time, return if so
    isValid = False
    Do While isValid = False
        'check #1 - is the turnaround time before the day begins?
        If Hour(result) < 9 Then
            If Hour(StartTime) < 20 Then
                offset = offset - 20 + Hour(StartTime) 'check to see if a portion of the task time would be before end of day, subtract this amount from the offset
            End If
            offset = offset + 9 = Hour(result) 'gets the offset to the beginning of day
        ElseIf Weekday(result, vbSaturday) = 1 Then
            offset = offset + 48 'if we're on a Saturday, add two days
        ElseIf Weekday(result, vbSunday) = 1 Then
            offset = offset + 24 'if we're on a Sunday, add one day
        ElseIf IsHoliday(result, HolidayLookupRange) Then
            offset = offset + 24 'if we're on a holiday, add one day
        Else
            isValid = True
        End If

        result = DateAdd("h", taskTime + offset, StartTime) 're-evaluate result
    Loop

    GetTurnaroundDateAndTime = result
End Function

Function GetTaskTime(TaskType As String, TaskTimeRange As Range) As Double
    'TODO: implement function to lookup the task time from the table
    GetTaskTime = 3
End Function

Function IsHoliday(DateToLookup As Date, HolidayLookupRange As Range) As Boolean
    'TODO: implement function to lookup if date is a holiday
    IsHoliday = False
End Function

Вот несколько ссылок, которые помогут вам начать работу с VBA:

Вы захотите протестировать множество различных сценариев, прежде чем почувствуете себя комфортно с кодом. Я просто быстро собрал что-нибудь!

вау, это выглядит сложно. Обязательно постараюсь это узнать, обновлю вас!

roberth 10.08.2018 00:52

Другие вопросы по теме