Insertar y copiar filas con macro excel

buenas!, como están gente!, pues aquí estoy con una consulta sobre
macros, de lo que yo no tengo idea, por eso acudo a ustedes por ayuda.
Busque en el foro pero lo que encontré no es lo que estoy buscando.
Desde ya gracias a todos.
la consulta es la siguiente:
mis datos originales como ejemplo son estos: (la lista original contiene 749 filas)


y
necesito crear una macro que me inserte filas y copie el original pero
con las sumas de +1 para "inicial" hasta llegar al mismo monto de
"final" y +30 en las fechas, para que quede de esta manera:

1 respuesta

Respuesta
1

Te anexo la macro.

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

Sub insertar()
'Por.DAM
    For i = Range("A" & Rows.Count).End(xlUp).Row To 2 Step -1
        cuantos = Cells(i, "E") - Cells(i, "D")
        n = 0
        m = cuantos
        For j = 1 To cuantos
            Rows(i).Copy
            Rows(i + 1).Insert Shift:=xlDown
            Cells(i + 1, "D") = Cells(i + 1, "E") - n
            Cells(i + 1, "F") = Cells(i + 1, "F") + (30 * m)
            n = n + 1
            m = m - 1
        Next
    Next
    MsgBox "Filas insertadas",
vbInformation, "INSERTAR"
End Sub

Nota: Al sumar 30 días a una fecha no necesariamente te va a poner el mismo día, ya que los meses no tienen 30 días.

excelente!!!, y tenes razón, ya que agregarle 30 me va cambiando los días, hay alguna forma de sumar 1 Mes manteniendo los Días?

Ejemplo:

12/01/2014

12/02/2014

12/03/2014

y asi sucesivamente

desde ya muchas gracias por la ayuda!

Esta sería la macro

Sub insertar()
'Por.DAM
    For i = Range("A" & Rows.Count).End(xlUp).Row To 2 Step -1
        cuantos = Cells(i, "E") - Cells(i, "D")
        n = 0
        m = cuantos
        For j = 1 To cuantos
            Rows(i).Copy
            Rows(i + 1).Insert Shift:=xlDown
            Cells(i + 1, "D") = Cells(i + 1, "E") - n
            dia = Day(Cells(i, "F"))
            mes = Month(Cells(i + 1, "F") + (30 * m))
            año = Year(Cells(i + 1, "F") + (30 * m))
            Do While dia > Day(DateSerial(año, mes + 1, 1) - 1)
                dia = dia - 1
            Loop
            Cells(i + 1, "F") = DateSerial(año, mes, dia)
            n = n + 1
            m = m - 1
        Next
    Next
    MsgBox "Filas insertadas", vbInformation, "INSERTAR"
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas