Insertar datos de una fila a otra con macros

buenos días, quisiera que me pudieran ayudar con el código de una macro la cual quisiera que me copie los valores de la fila anterior y los ponga en la fila siguiente(incluye las formulas que tuviera ese rango de celdas)

Ejm

Celda B4 hasta AD4 y pegarla en la celda B5 hasta AD5

OJO: tengo una macro que me permite agregar fila osea no es que empiece en B4 puede empezar en donde la macro me permite agregar la fila

Es urgente el jefe me ta presionando y ya toy full nerviossss

Sub añadir_fila()
Dim hoja_tabla As Worksheet
Dim existe As Boolean
Dim I, N_filas, N_porticos, grupo As Single
' N_filas es la cantidad de filas de la tabla actual
' N_porticos es la cantidad de pórticos
Set hoja_tabla = ActiveSheet
Application.ScreenUpdating = False
'=======================================================
'Ahora va a calcular la cantidad de filas en la tabla
'(deposita el valor en la variable N_filas).
'-------------------------------------------------------
'Verifica que exista hoja llamada "REMU+GRAT"
existe = False
For I = 1 To Sheets.Count
If Sheets(I).Name = "REMU+GRAT" Then
existe = True
Exit For
End If
Next
'Si no existe, no puede trabajar
If existe = False Then
MsgBox "No existe hoja llamada 'REMU+GRAT'. No se puede ejecutar la Macro.", vbQuestion
Exit Sub
End If
'Si llegó hasta aquí es porque existe la hoja "REMU+GRAT"
N_porticos = Sheets("REMU+GRAT").Cells(567, 2) '<-- dato en celda B3
N_filas = 0
For I = 1 To N_porticos
N_filas = N_filas + Sheets("REMU+GRAT").Cells(568 + I, 2)
Next
'=========================================================
'Ahora vamos a agregar la nueva fila al pórtico actual.
'Lo primero es saber si la fila de la celda activa está
'dentro del grupo de algún pórtico. El rango de filas de la tabla
'se extiende desde la fila 5 hasta la fila 4 + N_filas
hoja_tabla.Activate
fila = ActiveCell.Row
If fila < 5 Or fila > 4 + N_filas Then
'Se encuentra fuera del rango de la tabla, entonces salimos sin
'hacer nada. Pero ...
Exit Sub
End If
'... Si no salió, es porque estamos dentro de rango.
'Ahora a determinar a cuál grupo pertenece la fila de la celda activa
grupo = 1
Sheets("REMU+GRAT").Activate
suma_parcial_filas = 0
For I = 1 To Range("B567") '<-- contiene la cantidad de METAS
suma_parcial_filas = suma_parcial_filas + Cells(I + 568, 2)
If fila > 4 + suma_parcial_filas Then
grupo = grupo + 1
Else
Exit For
End If
'Se usa un proceso iterativo: La variable suma_parcial_filas lleva
'la suma de las filas de los grupos recorridos, desde el primero hasta
'el último (según los datos de la hoja "config").
'Si nuestra fila excede a la suma de las filas de los grupos ya recorridos,
'el grupo al que pertenece debe ser el siguiente.
Next
'Note ahora que suma_parcial_filas + 4 es la última fila del grupo a que
'pertenece fila
hoja_tabla.Activate
Rows(4 + suma_parcial_filas).Insert shift = xlDown
'Al insertar fila la secuencia de numeración se descompleta.
'Vamos a acomodarla
suma_parcial_filas = suma_parcial_filas + 1 '<-- importante!!!
Cells(4 + suma_parcial_filas, 1).Select
ActiveCell = ActiveCell.Offset(-2, 0) + 2
ActiveCell.Offset(-1, 0) = ActiveCell.Offset(-2, 0) + 1
'Ahora, actualiza los valores en hoja "REMU+GRAT" (porque se añadió
'una fila al grupo elegido)
Sheets("REMU+GRAT").Activate
Cells(568 + grupo, 2) = Cells(568 + grupo, 2) + 1
hoja_tabla.Activate
End Sub

Añade tu respuesta

Haz clic para o