Macro para copiar filas según valor de celda

Yo me guié por esta macro que publico Juan Modelo, yo la acomode según mis necesidades pero la macro me inserta una fila menos, como puedo acomodarla para que me inserte y copie la cantidad exacta de filas que dice en la celda y aparte me las enumere. Ejemplo:celdaB8=10 (las filas que necesito que me inserte y copie el contenido) y apartir de la celda B9 me las empiece a enumerar del 1 al 10

Sub Funcionar()
Range("a8").Select
Do While ActiveCell.Value <> ""
filas = ActiveCell.Offset(0, 1).Value
ubica = ActiveCell.Address(False, False)
ActiveCell.Offset(1, 0).Select
For x = 1 To filas - 1 " (To filas +1 no me funciona)"
ActiveCell.EntireRow.Insert
Next
Range(ubica).Select
Range(ActiveCell, ActiveCell.Offset(0, 3)).Copy
Range(ActiveCell, ActiveCell.Offset(filas - 1, 3)).PasteSpecial xlPasteValues
Range(ubica).Select
ActiveCell.Offset(filas, 0).Select
Loop
Range("a8").Select
End Sub

1 Respuesta

Respuesta
1

No entiendo muy bien lo que hace esa macro.

Pero considerando tu descripción, quieres que a partir de la fila 9 se inserte el número de filas que tienes en la celda B8.

Según la macro copia el rango de celda A8:D8 y los pega en las nuevas filas insertadas.

Prueba con la siguiente macro

Sub Copiar_Filas()
'Por.Dante Amor
    Application.ScreenUpdating = False
    filas = Range("B8")
    If filas <= 0 Then
        MsgBox "Captura un número de filas en la cleda B8"
        Exit Sub
    End If
    '
    Rows("9:" & 9 + filas - 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("A8:D8").Copy
    Range("A9:A" & 9 + filas - 1).PasteSpecial xlValues
    With Range("B9:B" & 9 + filas - 1)
        .FormulaR1C1 = "=ROW(R[-8]C)"
        .Value = .Value
    End With
    Application.CutCopyMode = False
    Range("A8").Select
End Sub

Si no es lo que necesitas, entonces pon un ejemplo de lo que tienes y otro ejemplo de lo que esperas como resultado; de ser posible, pon 2 imágenes una con lo que tienes y otra con lo que esperas de resultado.


.

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

.

Avísame cualquier duda

.

Buenas tardes.

En la celda B8 está la cantidad de filas que necesito insertar y que al insertar se enumeren y se copie la información de la fila superior en pegado de valores

Cuadro inicial.

cuadro como debe quedar.

Nota:actualmente lo hago con una macro que publicaste,esta lo que tiene es que me inserta una fila menos y no las enumera.

Esa macro que pusiste no es mía.

Te anexo una nueva macro, prueba y me comentas

Sub Copiar_Filas()
'Por.Dante Amor
    Application.ScreenUpdating = False
    For i = Range("B" & Rows.Count).End(xlUp).Row To 8 Step -1
        filas = Cells(i, "B")
        Rows(i + 1 & ":" & i + 1 + filas - 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Rows(i).Copy
        Rows(i + 1 & ":" & i + 1 + filas - 1).PasteSpecial xlValues
        With Range("B" & i + 1 & ":B" & i + 1 + filas - 1)
            .FormulaR1C1 = "=ROW()-ROW(R" & i & "C)"
            .Value = .Value
        End With
    Next
    Range("A8").Select
    Application.CutCopyMode = False
End Sub

.

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

.

Avísame cualquier duda

.

umm dante no me funciona :(  

Envíame tu archivo con 2 hojas, en la hoja 1 pon la información original, en la hoja2 pon la información que esperas como resultado.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Jessica Castañeda” y el título de esta pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas