Cuando una celda con formato [h]:mm:ss alcance el valor 20:00:00 ejecutar macro

Estoy haciendo un reloj-calendario en Excel 2007 para controlar el horario mensual que hago (bueno, y para mis compañeros también...). Está estructurado de la siguiente manera:

Columna B Días del mes (Lunes, 01; Martes, 02...)

Columna C hora entrada 1

Columna D hora salida 1

Columna E hora entrada 2

Columna F hora salida 2 (las cuatro columnas de hora, tienen formato h:mm:ss

Columna G Observaciones

Columna H total horas (con formato h:mm:ss)

celda H40 = Suma(H7:H37)

Las filas van desde la 7 a la 37 ambas inclusive (para los 31 días que puede tener como máximo un mes)

Además, hay 6 celdas (J7 en la que aparece el total de horas a realizar en el mes, J9 = suma de horas realizadas, J11 = horas que quedan por realizar; J13 = total de horas a realizar en el mes en horario especial, J15 = total horas realizadas en horario especial y J17 = horas que quedan por realizar en horario especial.

En principio, nosotros realizamos todo el horario en jornada intensiva por la mañana desde las 07:00 hasta las 15:00, si bien se nos permite entrar hasta las 08:00 y salir a las 14:00 siempre y cuando las dos horas que faltan por hacer las recuperemos por la tarde. Por ello, en la columna H la fórmula que utilizo es:

= D1-C1+F1-E1 

Como veis, son referencias relativas que extiendo a toda la columna. Hasta aquí sin problemas. Ahora bien, en determinadas ocasiones, se nos pide que hagamos un horario especial, que implica realizar 20 horas más al mes. En estos casos, las 20 primeras horas que se hacen por la tarde (hora entrada 2 y hora salida 2) NO deben computarse con el horario de mañanas, pero sí las que se realicen a partir de esas 20 horas. La idea es poner un botón de comando llamado horario especial, el cual, al pulsarlo, debería indicar que estamos en este caso. Por ejemplo, podría dar a la celda A1 el valor 1 para así utilizar este valor en alguna macro del tipo

Si la celda A1= 1 entonces las 20 primeras horas que se hagan por las tardes no deben aparecer en la celda J9 sino en la celda J15; pero las siguientes no deben aparecer en J15 sino en J9.

El valor de J9 es igual al de H40, de ahí el formato que exponía en el título [h]:mm:ss ya que, si pongo otro formato, en el momento que pasa de 24 horas, no me muestra 25 horas, 26 horas...

En la columna I muestro la suma de los resultados de la tarde (Entrada 2, Salida 2) ya que en la celda I40 el valor es =Suma(I7:I37) y, por tanto J15=I40

Lo que deseo es que, al llegar a 20 horas en J15, deje de sumar en esa celda y lo sume en J9...

Había pensado en utilizar una fórmula (colocada en J15) del tipo

= Si($I$40 >= 20:00:00; 20:00:00; $I$40)

y en J9 pondría

= Si($A$1=1;Si($I$40< 20:00:00; $H$40-$I$40; $H$40);$H$40)

Pero aquí tengo dos problemas:

El primero es que mientras que I40 es menor que 20:00:00 funciona bien, me da el valor H40-I40; pero cuando es mayor me sigue dando el mismo valor, es decir sigue quitando las horas de la tarde.

El segundo problema es que no siempre se da la circunstancia de llegar a 20:00:00 de forma exacta. Puede ocurrir que, con las horas de la tarde, lleguemos a 21:00:00 -por ejemplo- y en ese caso, debería sumar una hora a H40...

Además, debería poder hacer que, cuando I40 llegue a 20, A1 pase a valer 0 para que en la fórmula utilizada en J9 me devuelva el valor correspondiente a falso...

Ya sé que todo esto es un galimatías, pero si alguien puede entenderlo y darme una solución os quedaría muy agradecido...

Muchas gracias a todos por vuestra ayuda, si no se entiende la pregunta, os ruego me lo hagáis saber para intentar redactarla mejor.

Añade tu respuesta

Haz clic para o