Hola.
He visto en algunos excel de JCE2 que cuando le das a que ejecute una macro te dice el tiempo
estimado para la conclusión de ese proceso. ¿Alguien podría indicarme como se podría hacer?
saludos
Tiempo estimado excel
-
- 10
- Mensajes: 75
- Registrado: Jue 03 Oct, 2013 3:54 pm
Re: Tiempo estimado excel
No se como lo hace Jorge , ni tampoco lo he hecho alguna vez , pero usando un poco la lógica puede que salga algo.
En la mayoría de los casos se trata de un bucle repetitivo y con solo calcular el tiempo que tarda en completar un paso del bucle y el numero total de repeticiones se puede hallar lo que queda (en cada momento) hasta terminar todo el proceso .
Con lo poco que se en VBA he creado esta Macro , para que te hagas una idea de como se puede hacer .
La macro , pide un numero "n" de pasos que quieres que tenga el bucle . El proceso que tienen que hacer a cada paso , es Indicar en la Celda C4 , el numero del paso .
Para calcular el tiempo que tarda en hacer un solo paso se debe saber la hora cuando empieza a hacer el proceso => t1 = Now y la hora cuando termina el proceso (Now) . La diferencia Now - t1 = t2 es el tiempo que tarda en hacer un paso del bucle . Como en este caso la diferencia es muy pequeña y tiende a 0 , le sumo algo insignificativo como 0.0000001 para que no se interprete como un 0 .
Ahora , para saber cuanto tiempo queda hasta que termina todos los "n" pasos solo queda por multiplicar lo que tarda en cada paso por los pasos restantes (n - i) en cada momento . Para estar informado a cada momento cuanto queda se le asigna a la Celda E4 este tiempo restante (n - i)* t2 en formato horas:minutos:segundos (hh:mm:ss) .
Espero que te sea uitil
En la mayoría de los casos se trata de un bucle repetitivo y con solo calcular el tiempo que tarda en completar un paso del bucle y el numero total de repeticiones se puede hallar lo que queda (en cada momento) hasta terminar todo el proceso .
Con lo poco que se en VBA he creado esta Macro , para que te hagas una idea de como se puede hacer .
Código: Seleccionar todo
Sub tiempo_restante()
n = InputBox("Introduzca el numero de procesos en el bucle")
Range("C3") = "Nº Procesos": Range("E3") = "Tiempo Restante"
For i = 1 To n
t1 = Now
Range("C4") = i
t2 = Now - t1 + 0.00000001
Range("E4") = Format((n - i) * t2, "hh:mm:ss")
Next i
End Sub
Para calcular el tiempo que tarda en hacer un solo paso se debe saber la hora cuando empieza a hacer el proceso => t1 = Now y la hora cuando termina el proceso (Now) . La diferencia Now - t1 = t2 es el tiempo que tarda en hacer un paso del bucle . Como en este caso la diferencia es muy pequeña y tiende a 0 , le sumo algo insignificativo como 0.0000001 para que no se interprete como un 0 .
Ahora , para saber cuanto tiempo queda hasta que termina todos los "n" pasos solo queda por multiplicar lo que tarda en cada paso por los pasos restantes (n - i) en cada momento . Para estar informado a cada momento cuanto queda se le asigna a la Celda E4 este tiempo restante (n - i)* t2 en formato horas:minutos:segundos (hh:mm:ss) .
Espero que te sea uitil
-
- 10
- Mensajes: 75
- Registrado: Jue 03 Oct, 2013 3:54 pm
Re: Tiempo estimado excel
Gracias, lo he probado y puede servir.
Aunque si haces varias cosas en el bucle la cosa cambia y el tiempo hace cosas raras y no se estabiliza.
saludos
Aunque si haces varias cosas en el bucle la cosa cambia y el tiempo hace cosas raras y no se estabiliza.
saludos
Re: Tiempo estimado excel
Si se tarda mas de un segundo en hacer un solo paso , creo que puedes borrar lo que sume adicional para que no sea 0 . Me refiero a borrar " + 0.00000001 " . Esto lo he sumado porque la diferencia (Now - t1) ,en el caso que he expuesto yo , daba 0 , ya que no tardaba nada en hacer un paso .FEsmeralda escribió:Gracias, lo he probado y puede servir.
Aunque si haces varias cosas en el bucle la cosa cambia y el tiempo hace cosas raras y no se estabiliza.
saludos
El "0.00000001" creo que corresponde a un segundo si se traduce al formato de horas hh:mm:ss
Re: Tiempo estimado excel
Se me había pasado por alto este hilo, y ya que se alude a alguna de mis aplicaciones os paso el código para poner el tiempo restante.
Como veis es una función a la que se llama conforme vamos avanzando en un bucle, al principio del mismo fijamos la HInicio y vamos calculando el tiempo que nos ha costado llevar a cabo la parte parcial frente al total.
Código: Seleccionar todo
Function Progreso(parcial As Long, total As Long)
Dim Hfin As Date
On Error Resume Next
If (parcial / (total * 0.01)) > AVANCE Then
AVANCE = AVANCE + 1
Hfin = Time
Range("A1").Value = (Hfin - HInicio) * (-1 + total / (parcial + 1))
DoEvents
End If
End Function
Como veis es una función a la que se llama conforme vamos avanzando en un bucle, al principio del mismo fijamos la HInicio y vamos calculando el tiempo que nos ha costado llevar a cabo la parte parcial frente al total.