En este grupo En todos

Foro de Excel

acelerar una macro?

heberth
Lic. matematica fisica universidad del...
Escrito por Heberth Rendon Castillo
el 02/07/2011

Primero quiero saludarlos.
La pregunta es la siguiente y no si tenga respuesta.
Tengo una macro con la cual filtro las bases de datos es la siguiente.

With Worksheets("INFORMES"). Range("A2")
Sheets("CONSECUTIVO AVERIAS"). Range("A1:AF20000"). AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:= _
Range("A1:A2"), CopyToRange:=Range("BA1:CB1"), _
Unique:=True
End With

Bueno hasta ahora me ha funcionado perfectamente; pero....
me he enfrentado a una base de más o menos 10. 000 datos y la macro se pone muy lenta; te cuento que se me está demorando más de 2 minutos para filtrarla. No sé si exista algo para que filtre mas rápido?.
De antemano te agradezco cualquier ayuda.

Cacho Rodríguez
Ing. electrónica u.n.r.
Escrito por Cacho Rodríguez
el 02/07/2011

Hola! Heberth.
He intentado reproducir tu dilema: una tabla de datos en A1:AF20000, con fórmulas en todas sus celdas para hacerla más pesada.

Y, efectivamente, me ha tardado "2"... Pero "2 milisegundos".

Te sugiero que hagas la siguiente prueba:
-> Copia tus datos (A1:AF20000) como valores a un libro nuevo: manten abierto -sólo- ese libro.

-> Aplica el filtro en cuestión

Si no tienes demoras (como lo ha sido mi experiencia), entonces ya tienes focalizado el problema, es decir: tu libro original contiene tal cantidad de fórmulas, de formatos (negritas, colores, subrayados, etc), de formatos condicionales que torna inmanejable la administración -en Excel- de información masiva.

En ese caso: tendrás que rediseñar.
Saludos, Cacho.

Heberth Rendon Castillo
Lic. matematica fisica universidad del...
Escrito por Heberth Rendon Castillo
el 02/07/2011

Tu respuesta es correcta Cacho, lo que pasa es que en la empresa me dieron un archivo que posee muchas graficas dinamicas para dar informes y quieren que conserve esas 20 graficas dinamicas y a demas que maneje la base de datos. Bueno pensare que hacer. Te agredezco tu valiosa ayuda.

Adrian Colazo
Técnico operador en pc universidad nac...
Escrito por Adrian Colazo
el 02/07/2011

Hola, confieso que no leí todo "el hilo de conversación", solo el tema, y va mi acotación:

Sub MejoraTiempo()
Estado = Application. Calculation
Application. Calculation = xlCalculationManual
Application. ScreeUpdating = False
Application. Enableevents = False

'Tu código
Application. Calculation = estado 'restauro
Application. Enableevents = True
Application. ScreeUpdating = True
End Sub


Heberth Rendon Castillo
Lic. matematica fisica universidad del...
Escrito por Heberth Rendon Castillo
el 02/07/2011

Muchas gracias por su ayuda.