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
Ingeniería electrónica universidad nac...
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.