Macro que resta horas da valores erróneos

Buenas tardes,

estoy utilizando una pequeña macro en un excel para restar dos columnas con horas en formato hh.mm.ss para luego hacer el valor promedio de los resultados.

El problema viene cuando las horas corresponden a días diferentes. P.e., hora inicio 23:56:00 y hora fin 00:38:45 que da valores negativos y la media no cuadra.

Lo único que se me ha ocurrido es hacer que en esos casos sume 24 y así el tiempo sería correcto. El problema es que al ejecutar la macro, en las casillas en las que suma 24 me coloca delante del resultado en tiempo la fecha 23/01/1900. Total, que la media se dispara y no es real.

Estoy utilizado el siguiente dialogo:

Sub tiempos()
Columns("U").Select
Selection.Insert Shift:=xlToRight
For i = 2 To Range("J" & Rows.Count).End(xlUp).Row
Cells(i, "U") = Cells(i, "T") - Cells(i, "J")
If Cells(i, "U") < 0 Then
Cells(i, "U") = Cells(i, "U") + 24
End If
Next
Range("U65000").End(xlUp).Offset(1, 0).Select
Selection.Value = Application.WorksheetFunction.Average(Range("u2:u" & ActiveCell.Offset(-1, 0).Row))
End Sub

Hay alguna solución? Muchas gracias!

1 respuesta

Respuesta
1

Prueba con esta

Sub tiempos()
Columns("U").Select
Selection.Insert Shift:=xlToRight
For i = 2 To Range("J" & Rows.Count).End(xlUp).Row
    If Cells(i, "T") < Cells(i, "J") Then
        Cells(i, "U") = Cells(i, "T") - Cells(i, "J") + TimeSerial(24, 0, 0)
    Else
        Cells(i, "U") = Cells(i, "T") - Cells(i, "J")
    End If
Next
Range("U65000").End(xlUp).Offset(1, 0).Select
Selection.Value = Application.WorksheetFunction.Average(Range("u2:u" & ActiveCell.Offset(-1, 0).Row))
End Sub

Saludos.Dante Amor
Si es lo que necesitas.

Añade tu respuesta

Haz clic para o