Minha opinião é que problemas de SLA se tornam bastante complexos conforme variáveis vão sendo acrescentadas e vão se tornando cada vez mais inviáveis solução por fórmula.
No seu caso, eu sugiro a solução por meio de uma UDF, que é uma função personalizada desenvolvida no VBA.
Uma UDF personalizada para o cenário que entendi à sua questão poderia ser:
Public Function DATASLA(dInicial As Date, dTempoSolução As Date, dTempoEscalonamento As Date, rFeriados As Range) As Date
Dim dREPOSTA As Date
Do Until dTempoEscalonamento = CDate("00:00")
'DIAS UTEIS DE SEG A SEXTA
If WorksheetFunction.Weekday(dInicial, 2) <= 5 And WorksheetFunction.CountIf(rFeriados, VBA.Int(dInicial)) = 0 Then
If dTempoSolução > CDate("18:00") Then
dTempoSolução = CDate("18:00")
End If
If dInicial + dTempoSolução + dTempoEscalonamento > dInicial + CDate("18:00") Then
dTempoEscalonamento = dTempoEscalonamento - (CDate("18:00") - dTempoSolução)
Else
dREPOSTA = dInicial + dTempoSolução + dTempoEscalonamento
dTempoEscalonamento = CDate("00:00")
End If
End If
'SÁBADO
If WorksheetFunction.Weekday(dInicial, 2) = 6 And WorksheetFunction.CountIf(rFeriados, VBA.Int(dInicial)) = 0 Then
If dTempoSolução > CDate("12:00") Then
dTempoSolução = CDate("12:00")
End If
If dInicial + dTempoSolução + dTempoEscalonamento > dInicial + CDate("12:00") Then
dTempoEscalonamento = dTempoEscalonamento - (CDate("12:00") - dTempoSolução)
Else
dREPOSTA = dInicial + dTempoSolução + dTempoEscalonamento
dTempoEscalonamento = CDate("00:00")
End If
End If
dInicial = dInicial + 1
dTempoSolução = CDate("8:00")
Loop
DATASLA = dREPOSTA
End Function
Esta UDF tem a sintaxe:
=DATASLA(data_prazo;Hora_prazo;Hora_Escalonamento;intervalo_Feriados)
Todos os argumentos são obrigatórios, e na sua planilha seriam:
data_prazo: Coluna C da planilha Data Escalonamento
Hora_prazo: Coluna D da planilha Data Escalonamento
Hora_Escalonamento: células A3, B3, C3 e D3 da planilha Config
Intervalo_feriados: B3:B13 da planilha Feriados
Para facilitar, veja o arquivo anexo.
A UDF é passível de melhoria, fiz baseado no que compreendi das variáveis do seu cenário.
Abraços!
Rafael Issamu F. Kamimura
Moderador Oficial Microsoft Community - MCC (Contribuidor do Microsoft Community)
http://zip.net/bjrt0X - http://zip.net/bhrvbR
Foi útil? Clique na mãozinha
Conheça: http://excelmaniacos.com/
Postado : 28/09/2016 9:50 am