Macro que copie el rango de fórmulas de la fila precedente, si es que una celda especifica no se encuentra vacía.

Ya tengo una macro que ingresa en una solapa "Base" los datos que son incorporados en otra solapa.

A estos datos de la solapa "Base" que son registrados desde la columna "A" hasta la "R" se le hacen una serie de fórmulas en columnas continuas (Rango "S" hasta "AB").

Hoy en día muy a lo cavernicola, pegue todas esa fórmulas en un gran rango de filas hacia abajo, a fin de que si se incorporan datos en la fila, las fórmulas contiguas se calculen automáticamente. Esto por supuesto genera que el archivo sea super pesado y lento.

Lo que necesitaría de ser posible, es que cuando se registren datos en una nueva fila, haya una macro que copie en esta fila las fórmulas de la fila precedente..

Aclaración.. Las fórmulas a copiar (Rango "S" hasta "AB") son muchas y diversas...

2 Respuestas

Respuesta
2

Solamente agrega en tu macro una línea.

Por ejemplo:

Si en tu macro tienes una instrucción que busca la siguiente fila vacía de la última fila con datos, y tienes algo como esto:

uf = Range("A" & Rows.Count).End(xlUp).Row + 1

Es decir, en la variable uf tengo el número de fila de la siguiente celda vacía a la última fila con datos de la columna A.

Luego entonces, copiamos las fórmulas de la fila anterior en la nueva fila de esta forma:

Range("S" & uf - 1 & ":AB" & uf - 1). Copy Range("S" & uf)

En la línea anterior solamente cambia a variable uf por la variable donde tienes almacenada la última fila.

Entonces cada que copies los datos de la solapa2 a la "base", también se copiarán las fórmulas.

'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 
'.[Avísame cualquier duda

¡Gracias! POR MIL!

Se que es hiper sencillo para ti, pero no sabes lo que me haz facilitado el trabajo!

Gracias!

Disculpa que te moleste nuevamente Dante!

Si bien lo que me pasaste funciona de 10!, de acuerdo a mi armado, dependiendo de la información que se ingresa en otra solapa, en la "Base" se generan de 1 hasta 15 filas por vez..

Tu macro dada la incompleta información que te había dado primeramente, copia las fórmulas de la fila anterior (Rango "S" a "AB"), pero por ejemplo si la información cargada genera 2 o más filas, tu macro me copia solo las fórmulas en la primera fila...

¿Existe la posibilidad de que se copien las fórmulas dependiendo de la cantidad de filas que se generen previamente?

Aunque no se pueda, igualmente te agradezco una inmensidad!

Pero en tu macro, debes poner la fila que copia fórmulas después de generar cada fila:

Genera fila

Copia fórmula

Genera fila

Copia fórmula

Etc

Respuesta
1

La siguiente macro si en "A" hay datos de "S:AB" pega las fórmulas que están en "S1:AB1"

Sub CopiarFormulas()
fila = 2
Ufila = Range("A" & Rows.Count).End(xlUp).Row
For fila = 2 To Ufila
    If Cells(fila, 1).Value <> "" Then
        Range("S1:AB1").COPY
        Cells(fila, 1).Offset(0, 18).PasteSpecial Paste:=xlPasteFormulas
        Application.CutCopyMode = False
    End If
Next fila
End Sub

Esto era lo que querias hacer?

Comenta si te sirve.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas