Excel - Como cambiar rangos de datos en Macros?

   
Vista:

Como cambiar rangos de datos en Macros?

Publicado por Sergio (3 intervenciones) el 19/05/2010 01:26:22
Hola Buenas,

Estoy programando unas macros utilizando la opción de grabar macro (excel 2007). La macro la estoy grabando empleando una matriz de digamos 1000 filas por 5 columnas.., grabo la macro con todo lo que quiero hacer; copiar columnas, hacer operaciones entre ellas, ordenar datos, etc etc, pero cuando miro el código me doy cuenta que cuando copias una formula de una columna y AL EXTENDERLA HASTA EL FINAL DE LA COLUMNA, en el código en Vba aparece perfectamente definido que la formula se deberá copiar hasta la fila nº1000, y claro mi intencion al grabar la macro y hago doble click en el extremo inferior de la celda a extender hasta el final de la columna es que la formula se prolonge exactamente hasta la misma longitud que tiene la columna de datos que tiene a la izquierda... para el caso que me ocupa no tengo problema proque funciona perfectamente, ¿pero que pasará cuando la matriz tenga por ejemplo 1500 filas, me extenderá las formulas solo hasta la la fila 1000?, ¿hay alguna forma de cambiar el código para que la formula a extender se extienda tantas posiciones como celdas tenga la columna de su izaquierda?.
Por otro lado me pasa exactamente lo mismo cuando copio rangos de datos, SELECCIONO Y COPIO TODA UNA HOJA ó UN GRUPO DE COLUMNAS, pero luego al mirar el código en vba veo que lo que ha hecho es copiar exactamente el rango de datos que estan ocupados en la hoja, o el rango de datos que estan ocupados en el rango de culumnas respectivamente... y al igual que en el caso anterior, para el ejemplo que me ocupa no tengo problema, pero cuando la hoja tenga más filas no me copiará todos los datos

Por último, me gustaría saber con que formato de archivo es mejor trabajar cuando se trabaja con muchos datos y macros, Compatibilidad con 2000-2003, Excel 2007, o Libro de excel habilitado para macros?. Lo pregunto más que nada por si ello pudiera influir en que el tiempo de proceso fuera más corto, porque algunas macros cuando extiendo determinadas formulas (p.e =countif() ) a un gran rango de datos, les cuesta un buen rato...

Os agradezco mucho vuestra ayuda, por favor tened en cuenta que de Vba voy muuuuy justito. Muchas gracias!!.

Sergio.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Como cambiar rangos de datos en Macros?

Publicado por Abraham Valencia (2418 intervenciones) el 19/05/2010 06:30:19
Un poquito dificil adivinar que hacer sin ver tus macros, pero, suponiendo que solo sabes usar la grabadora de macros, pues ademas de mostrar lo generado para darnos una idea de lo que necesitas, pues te recomiendo darle una leida a algun manual de VBA

Abraham
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como cambiar rangos de datos en Macros?

Publicado por Sergio (3 intervenciones) el 19/05/2010 09:54:54
Hola muchas gracias por tu respuesta,

Te pongo mejor un ejemplo, que he hecho para la siguiente matriz:

1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5
6 6 6 6
7 7 7 7
8 8 8 8
9 9 9 9
10 10 10 10
11 11 11 11
12 12 12 12
13 13 13 13
14 14 14 14
15 15 15 15
16 16 16 16
17 17 17 17
18 18 18 18
19 19 19 19
20 20 20 20

Esta es la macro1:

-------

Sub Macro1()
'
' Macro1 Macro
' CALCULA LA SUMA DE LAS CUATRO CELDAS QUE TIENE A SU IZQUIERDA, Y EXTIENDE LA FORMULA HASTA EL FINAL DE LA COLUMNA
'

'
Range("E1").Select
ActiveCell.FormulaR1C1 = "=SUM(RC[-4]:RC[-1])"
Range("E1").Select
Selection.AutoFill Destination:=Range("E1:E20")
Range("E1:E20").Select

End Sub

-------

@@@Para extender la formual de suma desde la celda E1 hasta la celda E20, primero introduzco la f'ormula =sum(A1:A4) y una vez introducida hago doble click sobre le extremo inferior izquierdo, y entonces introduce la formula hasta la celda E20. El problema es que la macro se queda grabada para introducir la formula desde E1 hasta E20, por lo que solo extendera la formula hasta las primeras 20 filas, cuando mi intencion es que en el futuro si la hoja tiene mas filas extienda la formula hasta tantas filas como tenga la hoja. No se si me he explicado bien, lo que me gustaria es que el rango que graba la macro de alguna forma fuera un rango dinamico y si la columna de la izquierda tiene mas filas la formula se extienda a mas filas. Tiene solucion?.

Muchas gracias de antemano,
Sergio.


(disculpar los acentos)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como cambiar rangos de datos en Macros?

Publicado por Abraham Valencia (2418 intervenciones) el 19/05/2010 23:40:06
ejemplo

Dim strcelda$
strcelda$ = Range("B65536").End(xlUp).Address(0, 0)
Range("E1").Formula = "=Sum(A1:" & strcelda$ & ")"

Abraham
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como cambiar rangos de datos en Macros?

Publicado por Sergio (3 intervenciones) el 20/05/2010 00:16:10
Hola Muchas gracias por la respuesta!!,

Voy a ver si entiendo como funciona y lo sustituyo en mis macros.

Un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar