Forse non ho capito, ma se l' orario standard finisce alle 17:00 come e' possibile che tu lavori non restribuito fino a un orario magari del giorno dopo?
Comunque potresti usare questo codice:
- Codice: Seleziona tutto
Function WorkH(ByRef InOut As Range, ByRef StdH As Range) As Double
'InOut=Orari di Ingresso e Uscita; StdH=4 celle con In/Out, In/Out standard
Dim myMin As Integer, Steps As Double, I As Integer, StrMin As Double
'
If InOut.Range("A1").Value = 0 Or InOut.Range("B1").Value = 0 Then Exit Function
'
Steps = InOut.Range("B1").Value - Int(InOut.Range("B1").Value) - _
InOut.Range("A1").Value + Int(InOut.Range("A1").Value)
StrMin = InOut.Range("A1").Value - Int(InOut.Range("A1").Value)
If Steps < 0 Then Steps = Round((Steps + 1) * 1440, 0) Else Steps = Round(Steps * 1440, 0)
For I = 0 To Steps - 1
If (StrMin + I / 1440 - Int(StrMin + I / 1440)) >= StdH.Range("A1").Value And _
(StrMin + I / 1440 - Int(StrMin + I / 1440)) < StdH.Range("B1").Value Then
myMin = myMin + 1
ElseIf (StrMin + I / 1440 - Int(StrMin + I / 1440)) >= StdH.Range("C1").Value And _
(StrMin + I / 1440 - Int(StrMin + I / 1440)) < StdH.Range("D1").Value Then
myMin = myMin + 1
End If
Next I
WorkH = myMin / 1440
End Function
Da excel, Alt-F11 per aprire l' editor delle macro; Menu /Inserisci /Modulo; copi il codice e lo incolli nel frame di destra.
Poi torni in excel e usi una formula del tipo
- Codice: Seleziona tutto
=Workh(A2:B2;$J$1:$M$1)
Il risultato e' in formato orario; la formula puo' essere copiata poi verso il basso se hai un elenco di orari di ingresso /uscita da valorizzare.
Presuppone che l' ora di inizio sia in A2, quella di fine in B2, e le quattro celle con l' orario standard in J1:K1, L1:M1; se hai un layout diverso basta adattare la formula.
Se l' orario di termine e' inferiore all' orario di inizio si assume che si tratti del giorno dopo.
La proposta di W&G (vedi sopra) non l' ho provata perche' non ho capito la relazione tra la prima e la seconda formula e quale il tracciato dati su cui provare.
Ciao