Excel formula: Get work hours between dates and times

Fórmula genérica

=(DIAS.LAB(start,end)-1)*(upper-lower)
+SI(DIAS.LAB(end,end),MEDIANA(RESIDUO(end,1),upper,lower),upper)
-MEDIANA(DIAS.LAB(start,start)*RESIDUO(start,1),upper,lower)

Explicación

Para calcular el total de horas de trabajo entre dos fechas y horas, puede usar una fórmula basada en la función DIAS.LAB. En el ejemplo que se muestra, E5 contiene esta fórmula:
=(DIAS.LAB(B5,C5)-1)*(upper-lower)
+SI(DIAS.LAB(C5,C5),MEDIANA(RESIDUO(C5,1),upper,lower),upper)
-MEDIANA(DIAS.LAB(B5,B5)*RESIDUO(B5,1),upper,lower)
donde "más bajo" es el rango nombrado H5 y "superior" es el rango nombrado H6.
Nota: este ejemplo fue inspirado por un desafío de fórmula en Chandoo, y una solución más completa provista por el maestro de fórmulas Barry Houdini en el foro MrExcel.

Cómo funciona esta fórmula

Esta fórmula calcula las horas de trabajo totales entre dos fechas y horas, que ocurren entre un tiempo "inferior" y "superior". En el ejemplo que se muestra, la hora más baja es las 9:00 a.m. y la hora más alta es las 5:00 p.m. Estos aparecen en la fórmula como los rangos nombrados "inferior" y "superior".
La lógica de la fórmula es calcular todas las horas de trabajo posibles entre las fechas de inicio y finalización, inclusive, y luego retroceder cualquier hora en la fecha de inicio que ocurra entre la hora de inicio y la hora inferior, y cualquier hora en la fecha de finalización que ocurra el tiempo final y el tiempo superior.
La función DIAS.LAB maneja la exclusión de fines de semana y días festivos (cuando se proporciona como un rango de fechas). Puede cambiar a DIAS.LAB.INTL si su horario tiene días laborables no estándar.

Versión simple

Si las horas de inicio y finalización siempre ocurrirán entre las horas inferiores y superiores, puede usar una versión más simple de esta fórmula:
=(DIAS.LAB(B5,C5)-1)*(upper-lower)+RESIDUO(C5,1)-RESIDUO(B5,1)

Sin hora de inicio y hora de finalización

Para calcular el total de horas de trabajo entre dos fechas, suponiendo que todos los días sean días completos, puede usar una fórmula aún más simple:
=DIAS.LAB(start,end,holidays)*hours
Vea la explicación aquí para más detalles.

Comentarios en Facebook


0 comentarios:

Copyright © 2021 TRUJILLOSOFT