pasar datos a otra hoja

07/09/2007 - 08:03 por Cecilia | Informe spam
Hola de nuevo a todos
Tengo un archivo Excel que tiene 6 hojas, la primera contiene datos de
diferentes áreas y lo que quiero es que distinguiendo las áreas, envíe
las filas correspondientes por areas a las demás hojas.
Yo había creado un icono para cada área con la siguiente macro (el
ejemplo sería para el área de frescos):
Sub Area1()
'
' Area1 Macro
' Macro grabada el 29/01/07 por Cecilia
'
Sheets("Cajas").Select
Range("A4:D4").Select
Selection.AutoFilter
Selection.AutoFilter Field:=4, Criteria1:="Frescos"
Range("A4").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("1").Select
Range("A4").Select
ActiveSheet.Paste
Range("A5").Select
Selection.End(xlDown).Select
Sheets("Cajas").Select
Application.CutCopyMode = False
Selection.AutoFilter
Range("A5").Select
Selection.End(xlDown).Select
Sheets("1").Select
End Sub
Me funciona correcto, es justo lo que quiero hacer, pero el problema
que me surje es que en la página de "Cajas" que es donde estan
alimentadas todas las áreas el volumen ya es muy grande (se usan + o
-
600 filas al mes, ahora mismo va por la fila 4978) y la macro que
hasta ahora era válida, ahora es lentísima (creo que por el volumen
de
datos). Quizás se pueda modificar algo en esta misma macro o crear
otra, pero lo desconozco, no estoy muy suelta en esto.
Muchas gracias.
Un saludo
Cecilia
 

Leer las respuestas

#1 Juan M
07/09/2007 - 17:15 | Informe spam
Hola Cecilia,

La macro que has puesto no debería debería tardar demasiado debido al
volumen de datos, aun así se puede mejorar su rendimiento si evitas
seleccionar los rangos, las hojas...

Te paso una posible mejora de tu código,

Cometas el resultado?

Un saludo,
Juan

Inicio Código

Sub Area1()
Application.ScreenUpdating = False
With Worksheets("Cajas")
.Range("A4:D4").AutoFilter
.Range("A4").AutoFilter Field:=4, Criteria1:="Frescos"
.Range("A4:D" & .Range("A4").End(xlDown).Row).Copy _
Destination:=Worksheets("Hoja2").Range("A1")
.Range("A4").AutoFilter
End With
End Sub

Fin Código

Consulta original





"Cecilia" escribió
Hola de nuevo a todos
Tengo un archivo Excel que tiene 6 hojas, la primera contiene datos de
diferentes áreas y lo que quiero es que distinguiendo las áreas, envíe
las filas correspondientes por areas a las demás hojas.
Yo había creado un icono para cada área con la siguiente macro (el
ejemplo sería para el área de frescos):
Sub Area1()
'
' Area1 Macro
' Macro grabada el 29/01/07 por Cecilia
'
Sheets("Cajas").Select
Range("A4:D4").Select
Selection.AutoFilter
Selection.AutoFilter Field:=4, Criteria1:="Frescos"
Range("A4").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("1").Select
Range("A4").Select
ActiveSheet.Paste
Range("A5").Select
Selection.End(xlDown).Select
Sheets("Cajas").Select
Application.CutCopyMode = False
Selection.AutoFilter
Range("A5").Select
Selection.End(xlDown).Select
Sheets("1").Select
End Sub
Me funciona correcto, es justo lo que quiero hacer, pero el problema
que me surje es que en la página de "Cajas" que es donde estan
alimentadas todas las áreas el volumen ya es muy grande (se usan + o
-
600 filas al mes, ahora mismo va por la fila 4978) y la macro que
hasta ahora era válida, ahora es lentísima (creo que por el volumen
de
datos). Quizás se pueda modificar algo en esta misma macro o crear
otra, pero lo desconozco, no estoy muy suelta en esto.
Muchas gracias.
Un saludo
Cecilia

Preguntas similares