lunes, noviembre 17, 2014

Cálculo de duración de procesos por turnos

Los cálculos con fechas y horas en Excel suelen ser un tanto truculentos. Veamos por ejemplo esta consulta de una de mis lectoras:

Suponiendo que es 14-nov-14 8:00 am, tengo un proceso que dura 9 horas y mi turno dura 8 horas, cómo puedo hacer para que el día 15-nov-14 la hora de finalización sea 9:00am
Es decir, la tarea se realiza en un turno que empieza a las 08:00 AM y dura ocho horas. Si la tarea se extiende por más de ocho horas, ésta será completada el día siguiente.

La fórmula que nos permite hacer este cálculo es la siguiente

=SI(C5>C2,B5+TRUNCAR(C5/C2)+RESIDUO(C5,C2),B5+C5)

Veamos como funciona esta fórmula:

C5>C2 determina si el proceso puede completarse en las horas del turno;

B5 contiene la fecha y hora del comienzo del proceso;

TRUNCAR(C5/C2) nos calcula cuantos días debemos agregar a la fecha de iniciación del proceso para completarlo (múltiplos de la duración del turno);

RESIDUO(C5,C2) calcula cuántas horas debemos agregar a los múltiplos de ocho horas (la duración del turno).

De esta manera, si el proceso dura más de ocho horas, la función SI aplica la primer parte de la fórmula:

B5+TRUNCAR(C5/C2)+RESIDUO(C5,C2)



Las cosas se complican un poco (más) si queremos calcular la fecha de finalización del proceso tomando en cuenta sólo los días laborables.
Contamos para ello con la función DIA.LAB, es cierto, pero hay un pequeño problema. DIA.LAB no toma en cuenta las horas, sólo las fechas, como podemos ver en este ejemplo:


Dado que el 14/11/2014 cae un viernes, el próximo día laboral es el 17/11/2014 (lunes), pero podemos ver que la fórmula no toma en cuenta la hora de comienzo, sólo la fecha.
A pesar de esto podemos usar DIA.LAB para nuestro cálculo, de esta manera:

=SI(C5>C2,DIA.LAB(B5,TRUNCAR(C5/C2))+C1+RESIDUO(C5,C2),B5+C5)


donde C1 es la hora de comienzo del turno.



13 comentarios:

  1. Muy buen post, muchas gracias por el aporte.
    El único problema que veo es que esta fórmula solo funciona si el comienzo del turno y el comienzo de la tarea coinciden, de lo contrario, considera que el comienzo de la tarea es el mismo que el del turno, es decir, las 8:00.
    ¿Existe alguna fórmula para corregir esto?
    Muchas gracias.

    ResponderBorrar
  2. Hmmm...no me parece que exista ese problema. Por ejemplo, si ponemos 14/11/2014 10:00 en B5, la fórmula da como resultado 15/11/2014 11:00 lo que parece correcto.
    EL primer día el proceso se realiza de las 10 de mañana hasta las 4 de la tarde, es decir, 6 horas. Quedan por lo tanto 3 horas para completar el proceso que empieza al día siguiente a las 8 de la mañana y concluye a las 11:00-

    ResponderBorrar
  3. Muchas gracias por responder.
    Considerando que la fecha de comienzo es el 10/11/2014 a las 8:00h (B5) y la duración de la tarea es de 9 horas (C5), la finalización da como resultado 11/11/2014 a las 9:00h (D5), es decir, 8 horas de la jornada del día 10 + 1 hora de la jornada del día 11. Al cambiar la hora de comienzo a las 10:00h (B5), el resultado de finalización (D5) no se modifica...

    ResponderBorrar
  4. Tendrás que mandarme el archivo para que pueda ver qué es lo que no funciona. Cuando pruebo la fórmula con tus datos, todo funciona.
    Una pregunta, ¿en la celda B5 pones la fecha + hora o solamente la hora?

    ResponderBorrar
  5. En la celda B5 tengo la fecha + la hora...
    ¿A qué dirección puedo enviarte el archivo?
    Muchísimas gracias por tu ayuda.

    ResponderBorrar
  6. Fijate en ek enkcae Ayuda, en la parte superior del blog.

    ResponderBorrar
  7. Hola, Jorge, estuve leyendo algunos de tus post y respuestas pero no logro encontrar la respuesta a mi problema. Lo que requiero es poder acumular las horas de un día no hábil, pero parcial, es decir, de Lun-Vie Horario de 7:00 a 16:30, y el sabado de 8:00 a 14:00.

    ResponderBorrar
  8. No me queda claro si se trata de sumar las horas trabajadas (para lo cual no hace falta saber el día de la semana) o para calcular horas extras (para lo cual si tenemos que saber cuando empieza y cuando termina la jornada laboral de acuerdo al día de la semana).

    ResponderBorrar
    Respuestas
    1. Jorge, muchas gracias por tu pronta respuesta... Lo que estoy tratando de hacer es un programa de producción. Tengo los siguientes datos: Fecha inicial 9/Mzo/20 7:00am, Comienzo Turno 7:00am, Duración de turno 22.5hrs y duración de proyecto de 150hrs. La formula que nos enseñas resulta en un fin de proyecto 17/Mzo/20 22:00pm "DIA.LAB($A23,TRUNCAR(($G23/24)/(22.5/24)))+(7/24)+RESIDUO(($G23/24),(22.5/24))" donde A23=9/Mzo/20 7:00am y G23=150hrs. esta formula, como bien lo explicas, contempla como días no laborables, el sábado y domingo, y lo que yo quiero hacer es que la formula me considere que los sábados tengo disponibles 14.5hrs, es decir un turno de 7:00am a 9:30pm.

      Borrar
    2. En los próximos días publicaré un post al respecto. Como comprenderás presentar una solución necesita más espacio del disponible en un comentario.

      Borrar
    3. De acuerdo... Muchas Gracias por el apoyo... Estaré al pendiente... Saludos

      Borrar
    4. De acuerdo... Muchas Gracias por el apoyo... Estaré al pendiente... Saludos

      Borrar

Nota: sólo los miembros de este blog pueden publicar comentarios.