Sumar horas a una fecha y hora sin contabilizar los festivos

Actualmente, tengo una función que teniendo en la celda A1 una fecha con una hora (13-03-2018 10:30), sabiendo que tengo una tareas de duran 110 horas y que mi horario de trabajo es de 8:00 a 19:00, me dice la fecha y hora en la que acabarían esas tareas, quitando las horas no laborables y los fines de semana. Pero no consigo excluir una lista festivos nacionales y locales que tengo en otra pestaña de Excel.

Para Dante Amor

Function CalculaFecFinal(fec As Range, horas As Range)
'Por Dante Amor
    fecfinal = fec.Value
    i = 0
    Do While i < horas.Value
        fecfinal = fecfinal + TimeValue("01:00")
        Select Case Weekday(fecfinal)
            Case 1, 7   'domingo, sábado
            Case Else
                hora = Format(fecfinal, "hh:mm")
                If TimeValue(hora) >= TimeValue("08:00") And _
                   TimeValue(hora) <= TimeValue("19:00") Then
                   i = i + 1
                End If
        End Select
    Loop
    CalculaFecFinal = fecfinal
End Function
Respuesta
1

Te anexo la actualización. Ahora tienes que poner las fechas festivas en un rango de celdas, por ejemplo:


Ahora la función se llama CalculaFechaFinal y tienes que poner la fecha inicial, las horas y el rango de festivos:

Ejemplo:

=CalculaFechaFinal(B2;C2;F2:F3)



Function CalculaFechaFinal(fec As Range, horas As Range, festivos As Range)
'Por Dante Amor
    fecfinal = fec.Value
    Dim fecha As Date
    i = 0
    Do While i < horas.Value
        fecfinal = fecfinal + TimeValue("01:00")
        fecha = DateSerial(Year(fecfinal), Month(fecfinal), Day(fecfinal))
        '
        existe = False
        For Each festiva In festivos
            If festiva = fecha Then
                existe = True
                Exit For
            End If
        Next
        If existe = False Then
            Select Case Weekday(fecfinal)
                Case 1, 7   'domingo, sábado
                Case Else
                    hora = Format(fecfinal, "hh:mm")
                    If TimeValue(hora) >= TimeValue("08:00") And _
                       TimeValue(hora) <= TimeValue("19:00") Then
                       i = i + 1
                    End If
            End Select
        End If
    Loop
    CalculaFechaFinal = fecfinal
End Function

.

.Sal u dos. Dante Amor. Si es lo que necesitas. No olvides valorar la respuesta. G racias

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas