![Fórmula para calcular la duración de tiempos que pueden abarcar dos días](https://rvso.com/image/1568503/F%C3%B3rmula%20para%20calcular%20la%20duraci%C3%B3n%20de%20tiempos%20que%20pueden%20abarcar%20dos%20d%C3%ADas.png)
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 B
incluyen horas que ocurren al día siguiente?
Hoja de 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 >= A1
entoncesMOD(B1-A1,1)
→B1-A1
como se esperaba
o - Si
B1 < A1
entoncesMOD(B1-A1,1)
es equivalente a1-(A1-B1)
(desdeMOD(-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 TRUE
los valores se fuerzan implícitamente a a 1
y FALSE
los valores a a 0
cuando se usan en operaciones aritméticas. De este modo:
- Si
B1 >= A1
entonces(B1<A1)
→0
y la fórmula se convierteB1-A1
en o - Si
B1 < A1
entonces(B1<A1)
→1
y 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 General
formatoy tipo =NOW()
. Al momento de escribir esto me sale 21/08/2018 11:25
.
Si lo coloca =NOW()
en la celda A1
y =NOW()+TIME(23,0,0)
en la celda B1
, si luego lo coloca =B1-A1
en la celda C1
y le da formato a la celda, Time
obtendrá 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 B1
y la celda, A1
ya 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 B1
pasada 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 B1
menos la celda A1
es un valor negativo ya que la hora en la celda B1
es 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 B1
esnopasada 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 Minutes
entre dos, 24Hrs DateTime Stamps
puedes 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 General
formato.