Necesitaria resolver una duda de excel

Estoy intentando crear una macro para excel, lo que quiero que haga el macro es que al yo seleccionar una fila en la que tengo varias formulas me arrastre las formulas hacia abajo x veces sin insertar más filas porque el espaciado entre las filas con formula ya está hecho.

Por ejemplo.

Selecciono A1 que es una fila en la que tengo 28 celdas con formulas y al ejecutar la macro me las arrastre a las 50 filas consecutivas, igual que si selecciono las celdas a mano y las arrastro hacia abajo, el problema es que esta hoja tiene 240.000 filas y hacerlo a mano es una barbaridad.

Respuesta
1

Solo aclarame un detalle más: ¿Cómo saber cuántas filas se deben arrastrar?

No valores aún. Espero tus aclaraciones.

se arrastra 1 fila hasta rellenar 48 filas más

gracias!

son 48 filas siempre :D

Entrá al Editor (presionando juntas las teclas Alt y F11)

Insertá un módulo

Copiá allí esta macro:

Sub arrastraFormulas()
'x Elsamatilde
'se pasa a modo de cálculo manual
    Application.Calculation = xlManual
'se arrastran las 28 col de la fila seleccionada, es decir A:AB
    filx = ActiveCell.Row + 48
    Range("A" & ActiveCell.Row & ":AB" & ActiveCell.Row).AutoFill _
    Destination:=Range("A" & ActiveCell.Row & ":AB" & filx), Type:=xlFillDefault
'se vuelve al modo de cálculo automático
    Application.Calculation = xlAutomatic
'opcional: posicionarse en la primer última celda completada
    Range("A" & filx).Select
End Sub

Luego podrás asignarle un atajo de teclado, o colocarle un botón, o utilizar el menú Macros. Estos temas los tengo explicados en la sección Macros de mi sitio.

Como verás paso a modo de cálculo manual para que durante el arrastre no esté calculando celda x celda y recién actualice todas al final del proceso.

El código va explicado para que ajustes algunos detalles como rango o nro de filas.

Buenas!

La verdad es que es exacto como esperaba sólo querría saber cómo añadir un pequeño detalle más.

Si yo en A1 ejecuto la macro me copia las fórmulas hasta A49 hasta ahí perfecto pero si yo en ese momento vuelvo a ejecutar la macro me va a copiar las fórmulas desde A49, hay alguna forma de que cuando copie las fórmulas la celda activa salte a ser A50? Es decir justo la siguiente a todas las copiadas?

Gracias

Al final dejé unas líneas opcionales para que se coloque en cierta celda.

Reemplazá esa línea por esta otra:

Range("A" & filx +1).Select

Sdos.

Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas