Necesito una macro que me de tiempos entre una fecha y otra, descontando días festivos, de descanso y por horarios

Tengo un archivo en el cual necesito que me de el tiempo transcurrido entre dos fechas, tomando en cuenta, días de descanso, días festivos y además el horario de servicio que da la localidad

Una disculpa por la imagen pero no encontré como subir el archivo

1 Respuesta

Respuesta
1

Se me ocurre la siguiente solución, no como macro sino con fórmulas. Quizás la puedes elaborar tú algo más.

La idea es hacer un calendario con las horas laborables por zonas geográficas de lunes a domingo como se ve en la imagen (columnas A a F).

Una vez hecha la primera semana basta copiar las fórmulas en la fila 9 hacia abajo indefinidamente hasta cubrir las fechas que se vayan a usar. Para los festivos basta poner a cero o borrar las horas laborables del día y zona geográfica correspondiente, pero es importante antes convertir las fórmulas en valores con copiar - pegar valores.

La información de fecha de inicio, fecha fin y zona geográfica para cada acción en particular están respectivamente en las columnas H, I y J. En la columna K ponemos la siguiente fórmula (para celda K2) : =SUMA(INDIRECTO(DIRECCION(COINCIDIR(H2;$A:$A;0);COINCIDIR(J2;$A$1:$F$1;0);;;"Hoja1")&":"&DIRECCION(COINCIDIR(I2;$A:$A;0);COINCIDIR(J2;$A$1:$F$1;0))))

Esto suma las horas laborables entre las dos fechas según la zona geográfica descontando eventualmente los festivos que estarían a cero.

Saludos

¿Es esto lo que querías? ¿Habría qué añadir algo más? ¿Cubre tu necesidad? si te sirve p.f.

Hola bien, lo que sucede es que lo necesito con macro, le explico...

Es necesario obtener el tiempo de respuesta de la siguiente forma: me dan la fecha y hora exactas de la solicitud del servicio, la fecha y hora exactas de cuando el técnico lo abre para darle atención, es este el tiempo que necesito sacar, sin embargo hay que tomar en cuenta de que localidad es ya que tienen distintos horarios de servicio y solo es este el que cuenta, siendo diferente de lunes a viernes, sábado y domingo y restar los días festivos que se presenten en el lapso de tiempo ya que esos como no se trabaja no son parte del conteo de tiempo de servicio.

Ese es el punto, lo he sacado con fórmulas pero al ser miles de registros se vuelve engorroso el archivo, y si se puede hacer con código seria más ágil aunque el tiempo de ejecucuion sea alto, al dar formato al archivo no vuelve a recalcular y es de fácil manejo.

Espero haber dado la información adecuada... Gracias

Si necesitas la exactitud de la hora de apertura del primer día y cierre del último hay que añadir un cálculo más. A la cifra ya calculada hay que restar la diferencia entre la hora de apertura de acción y el inicio de jornada del día inicial y la diferencia entre el fin de jornada y la hora de cierre de acción en el día final.

He añadido lo siguiente:

Columna J “HORA APERTURA ACCIÓN” (se introduce o se calcula a partir del dato de input)

Columna K “HORA CIERRE ACCIÓN” (se introduce o se calcula a partir del dato de input)

Columna N: “HORAS DEDUCIR 1ER DIA” (Fórmula para N4:=(+J4-BUSCARV(L4;Hoja2!$A$3:$H$6;DIASEM(H4;2)+1;0))*24 )

Columna O “HORAS DEDUCIR ULTIMO” (Fórmula para O4: =(BUSCARV(L4;Hoja2!$A$12:$H$15;DIASEM(I4;2)+1;0)-K4)*24 )

Las matrices que referencian las horas de entrada y salida por zona y día están en estas dos tablas en la Hoja2

Se modifica ligeramente la fórmula en M4 para restar los cálculos nuevos añadiendo solamente -N4-O4: =SUMA(INDIRECTO(DIRECCION(COINCIDIR(H4;$A:$A;0);COINCIDIR(L4;$A$3:$F$3;0);;;"Hoja1")&":"&DIRECCION(COINCIDIR(I4;$A:$A;0);COINCIDIR(L4;$A$3:$F$3;0))))-N4-O4

Por último para resolver el problema de memoria por las muchas fórmulas yo haría lo siguiente:

Opción a) tener guardadas las fórmulas en la fila 1 (rango M1O1 en la primera hoja arriba). Cada vez que se vuelcan nuevos datos este rango se copia manualmente para todos los registros, se recalcula y finalmente se convierte en valores (copiar + pegar como valores dejando fuera fila 1) con ello la hoja queda casi libre de fórmulas y no consume memoria.

Opción b) hacer esto mismo con una macro.

Para hacer la macro obviamente hace falta conocer las características del archivo específico.

lo se solo que no se como subirlo

Puedes enviar el fichero a citofacta(at)interbook.net

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas