Crear Bucle copiar y pegar Excel 2016

Muchach@s necesito hacer un bucle en excel, para copiar y pegar filas... El tema es que el copiado es de unas filas especificas (Fila 6 hasta Fila 10) estas filas contienen datos y formulas, necesito copiar estas filas y pegarlas desde la fila 12 en adelante, pero como insertar celdas copidas, luego que se vuelvan a copiar las filas y que se copien desde la fila 16.

Adjunto una foto para que se comprenda más mi consulta.

2 respuestas

Respuesta
1

19/08/16

Buenas tardes, Carlos

Espero haberte entendido correctamente.

En tal caso, activa el editor de Visual Basic (atajo: Alt+F11), inserta un nuevo módulo ("Insertar", "Módulo") y pega el siguiente código:

Sub InsFilas()
'Carlos, indica la celda donde empiezan los títulos/encabezados y las filas a replicar hacia abajo:  
primFila = "A5"
FilasCopia = "6:10"
'--  
cantFilas = Rows(FilasCopia).Rows.Count
LaFila = 1
Set ElRango = Range(primFila).Offset(LaFila + cantFilas + 1)
Range(primFila).Select
'Rutina de insertar filas copiadas:  
Do While Not IsEmpty(Range(primFila).Offset(LaFila + cantFilas))
        Rows(FilasCopia).Copy
        ElRango.Insert Shift:=xlDown
        Application.CutCopyMode = False
        LaFila = LaFila + cantFilas + 1
        Set ElRango = Range(primFila).Offset(LaFila + cantFilas + 1)
        Cont = Cont + 1
Loop
MsgBox "Listo! " & Chr(10) & "Se agregaron " & IIf(Cont, Cont & " grupos de filas.", " NINGUN linea."), vbInformation, "TERMINADO"
Set ElRango = Nothing
End Sub

Bien, verás que sólo debes indicar cuál es la celda donde inicia la base y cuales son las filas a copiar.

La rutina luego se encarga de copiar hasta el final del listado el grupo de filas indicado

A fin de evitar problemas, te sugiero que pruebes la rutina en una copia de tu hoja y veas si funcionó como esperabas.

En tal caso, espero tu devolución y la calificación que creas merece mi respuesta.

Si no, antes de valuarla, coméntame qué inconveniente encontraste.

Un abrazo

Fernando

(Buenos Aires, Argentina)

.

Estimado,

Creo que yo no supe explicar el caso, adjunto un print de pantalla.

Al lado izquierdo como tengo la información, y al lado derecho como necesito que quede después de la macro.

.

Buenas, Carlos

Es extraño, porque reproduje tu archivo para probar la rutina y dejaba el listado como muestras en tu pantalla.

Imagino que habrás probado la rutina que te envié. Entonces te pido que me indiques qué es lo que hace distinto a lo que solicitaste.

Un abrazo

Fernando

.

Mirándolo en detalle, cabe ampliar que deberás cambiar las variables como te indiqué en el código.

Donde dice:

'Carlos, indica la celda donde empiezan los títulos/encabezados y las filas a replicar hacia abajo:  
primFila = "A5"
FilasCopia = "6:10"

De acuerdo a lo que veo deberías cambiarlo a:

'Carlos, indica la celda donde empiezan los títulos/encabezados y las filas a replicar hacia abajo:  
primFila = "A3"
FilasCopia = "4:7"

Es la ventaja de trabajar con variables que permiten adaptar la rutina a tu planilla.

Prueba con esos cambios y dime si te funciona como deseas.

Abrazo

Fernando

.

Respuesta
1

H o l a : Te anexo la macro

Sub CopiarPegar()
'Por.Dante Amor
    Application.ScreenUpdating = False
    For i = Range("G" & Rows.Count).End(xlUp).Row To 11 Step -1
        Rows("6:10").Copy
        Rows(i + 1).Insert Shift:=xlDown
    Next
    Application.ScreenUpdating = True
    MsgBox "Fin"
End Sub

Sigue las Instrucciones para ejecutar la macro

  1. Abre tu archivo de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Para ejecutarla presiona F5

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Estimado,

Creo que no supe explicar, adjunto print de pantalla al lado izquierdo los datos originales, y al lado derecho los datos que necesito después de la macro.

Te anexo la macro actualizada de acuerdo al segundo ejemplo.

Sub CopiarPegar()
'Por.Dante Amor
    For i = Range("G" & Rows.Count).End(xlUp).Row To 8 Step -1
        Rows("4:7").Copy: Rows(i + 1).Insert Shift:=xlDown
    Next
End Sub

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas