Olá Jerudess!!
Como eu disse, essa sua questão é bastante desafiadora para realizar somente com as funções nativas do Excel. Por isso, vou propor uma solução criando uma nova função personalizada (UDF) através do VBA.
Abra o VBA (ALT+F11) e adicione um novo módulo no seu projeto e copie o código abaixo:
Function CalcularHoras(ByVal rgSel1 As Range, rgsel2 As Range)
'rgsel2 só foi adicionado para permitir a atualização automática da fórmula, essa variável não está sendo utilizada no código.
Dim i As Double
Dim x As Long
Dim rgCell As Range
For i = TimeValue("00:00") To TimeValue("23:59") Step TimeValue("00:01")
For Each rgCell In rgSel1
If i >= TimeSerial(Hour(rgCell.Value), Minute(rgCell.Value), 0) And _
i <= TimeSerial(Hour(rgCell.Offset(0, 1).Range("A1").Value), Minute(rgCell.Offset(0, 1).Range("A1").Value), 0) Then
x = x + 1
GoTo N
End If
Next rgCell
N:
Next i
CalcularHoras = TimeSerial(Int((x - 1) / 60), XLMod(x - 1, 60), 0) - TimeValue("00:01")
End Function
Function XLMod(a, b)
' This replicates the Excel MOD function
XLMod = a - b * Int(a / b)
End Function
Feche o vba e volte para sua planilha. A função que você vai utilizar será "=CalcularHoras(intervalo de Hora Inicio; Intervalo de Hora Final)"
Formate a célula com formato de horas para ter o resultado desejado.
Não desenvolvi a função com a variável de dia, embora seja possível, portanto os intervalos na fórmula devem ser equivalentes a de um dia só. E outra coisa, os horário inicial e final devem estar no mesmo dia. Notei que no seu arquivo você tem atividades que tem o horário final terminando no dia seguinte ao marcado, neste caso não vai funcionar corretamente, pois a função esta analisando todos os minutos de um só dia.
Se não te atender, tem que ir aperfeiçoando a UDF até chegar a solução ideal.
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 : 23/03/2015 8:34 am