Fórmula para calcular la duración de tiempos que pueden abarcar dos días

Fórmula para calcular la duración de tiempos que pueden abarcar dos días

Columna A: hora de inicio en formato de 24 horas (usando la fórmula =NOW()y bloqueada con Ctrl+ SHIFT+ ;)
Columna B: hora de finalización en formato de 24 horas (ingresada igual que para la columna A)
Columna C: duración, con formato como [mm], usando la fórmula=B1-A1

¿Cómo calculo la duración si los datos de la columna Bincluyen horas que ocurren al día siguiente?


Hoja de trabajo real:

Captura de pantalla del trabajo real

Respuesta1

Posiblementela solución más elegante y sencilla es la deesta respuestamencionado por fixer1234 eneste comentario:

=MOD(B1-A1,1)

Tenga en cuenta que se supone que ambos valores son valores de tiempo únicamente (o que la parte de la fecha se va a truncar), es decir, cada uno es menor que 1 y que la duración es menor que 24 horas.

Explicación:

Esto funciona porque para un valor de fecha y hora en serie, un 1 corresponde a 24 horas y un valor de solo hora es un valor de fecha y hora menor que 1. Por lo tanto:

  • Si B1 >= A1entonces MOD(B1-A1,1)B1-A1como se esperaba
    o
  • Si B1 < A1entonces MOD(B1-A1,1)es equivalente a 1-(A1-B1)(desde MOD(-n,m)=m-MOD(n,m)), lo que da la duración correcta del "complemento"


Una solución alternativa (tú juzgas si es más simple/más elegante ;-)) es:

=(B1<A1)+B1-A1

Explicación:

Esto funciona porque TRUElos valores se fuerzan implícitamente a a 1y FALSElos valores a a 0cuando se usan en operaciones aritméticas. De este modo:

  • Si B1 >= A1entonces (B1<A1)0y la fórmula se convierte B1-A1
    en o
  • Si B1 < A1entonces (B1<A1)1y la fórmula es equivalente a1-(A1-B1)

Tenga en cuenta que esta fórmula funcionará correctamenteincluso si ambos valores son fechas y horasy¡Están separados por más de 24 horas!Esto esnoEl caso de la primera fórmula, por lo que esta segunda fórmula es más útil/general.

Respuesta2

Ctrl++ Shiftsimplemente ;coloca la hora actual en la celda sin marca de fecha y, como señala @Akina en su respuesta, no bloquea nada.

NOW()agrega una marca de fecha a la celda, así como la hora. Para verlo, haga clic encelda vacía sin formato o cualquier celda en Generalformatoy tipo =NOW(). Al momento de escribir esto me sale 21/08/2018 11:25.

Si lo coloca =NOW()en la celda A1y =NOW()+TIME(23,0,0)en la celda B1, si luego lo coloca =B1-A1en la celda C1y le da formato a la celda, Timeobtendrá 23:00:00.

Si ingresa horas sin marcas de fecha, deberá usar una IF()fórmula para determinar si la segunda hora es menor que la primera (el período de tiempo pasa de la medianoche). Lo siguiente calculará la diferencia horaria entre la hora en la celda B1y la celda, A1ya sea que la hora de finalización sea pasada la medianoche o no. También funcionará con o sin marcas de fecha, ya que se ignoran las marcas de fecha.

=IF(B1<A1,MOD(B1-A1,1),B1-A1)

Explicación de la fórmula.

=IF(B1<A1,...)

¿El tiempo en la celda es B1pasada la medianoche? Si es así, se ejecuta la siguiente parte.

MOD(B1-A1,1)

Devuelve MOD(number,divisor)el resto después de dividir un número por un divisor. La celda B1menos la celda A1es un valor negativo ya que la hora en la celda B1es pasada la medianoche y a Excel no le gustan los valores de hora negativos en la mayoría de los casos, por lo que dará #####sin el archivo MOD(). Eso MOD()se soluciona.

Una alternativa a la MOD()fórmula sería utilizar

TIME(23,59,59)-TIME(HOUR(A1),MINUTE(A1),SECOND(A1))+TIME(0,0,1)+B1

Cual es 23:59:59 minus time in cell A1 plus 1 second plus time in cell B1.

El último bit que es ,B1-A1)es la última parte del IF()dónde si el tiempo en la celda B1esnopasada la medianoche.

Respuesta3

Gracias @Akina, esta es la única fórmula que funcionó para mí... Probé varias de las anteriores (con recuentos de votos positivos, claro está) y obtuve el temido ###### o algún número negativo con varios puntos decimales. Contabilizado tiempos que abarcan dos días SIN sellos de fecha y toda esa palabrería...

Respuesta4

Para obtener la diferencia Minutesentre dos, 24Hrs DateTime Stampspuedes usar cualquiera de ellos:

=Int((A2-A1)*24*60)

O

=int((A2-A1)*1440)

O

=ROUNDUP((A2-A1)*1440,2)

Nota,La celda de fórmula debe tener Generalformato.

información relacionada