Copiar Datos de una hoja a otra en continuación de la información que se tiene

Tengo un libro con las hojas: Ventas, data, lo que deseo es copiar de la hoja data la información de algunas columnas a la hoja VENTAS pero a continuación con la información que se tiene, adjunto unas imagenes lo que quiero es que se copie en este caso de la celda 6(esta en este caso es esta fila, puede ser otra si la información ingresada termina en otra fila nunca es fija la fila de Ventas)

Cabe indicar que la información que se va a copiar de la hoja data a Ventas son las resaltadas.

Espero me puedan ayudar con una macro para este proyecto.

1 respuesta

Respuesta
1

No me quedo claro que es lo que quieres te envío esta macro

Sub COPIAR_COLUMNAS()
Set DATOS = Sheets("DATA").Range("A2").CurrentRegion
 With DATOS
    FILAS = WorksheetFunction.CountA(.Columns(2)) - 1
    COL = .Columns.Count - 1
    Set DATOS = .Cells(2, 2).Resize(FILAS, COL)
    Union(.Columns(1), .Columns(2), .Columns(5), .Columns(6)).Copy
    FILAS2 = Sheets("VENTAS").Range("B3").CurrentRegion.Rows.Count
    If FILAS2 = 1 Then Sheets("VENTAS").Range("B2").PasteSpecial
    If FILAS2 > 1 Then Sheets("VENTAS").Range("B2").Rows(FILAS2 + 1).PasteSpecial
 End With
Set DATOS = Nothing
End Sub

Hola James:

Gracias por tu respuesta inmediata, pero al ejecutar la macro me copia filas mas abajo cuando lo que se desea que continúe con la información o registro en este caso se debe copiar a partir de la celda B6(esta celda para este ejemplo es opcional puede ser otra), a la vez no se copia en las columnas correctas, la columnas señaladas debe ir la primera de la izquierda debe estar en la columna E, y la siguiente en la columna G.

Espero que con esta observación me pueda ayudar a modificar la macro.

Muchas Gracias.

Este es el resultado de la macro

y esta es la macro

Sub copiar_datos()
Set hv = Worksheets("ventas")
Set hd = Worksheets("data")
filas = WorksheetFunction.CountA(hd.Range("b:b")) - 1
col = hd.Range("b2").CurrentRegion.Columns.Count - 1
Set datos = Range("b3").Resize(filas, col)
filas2 = WorksheetFunction.CountA(hv.Range("b:b")) - 1
col = hv.Range("b2").CurrentRegion.Columns.Count - 1
If filas2 = 1 Then Set destino = hv.Range("b3").Resize(filas2, col)
If filas2 > 1 Then Set destino = hv.Range("b3").Rows(filas2 + 1).Resize(filas2, col)
With destino
    .Columns(1).Resize(filas, 2).Value = datos.Columns(1).Resize(filas, 2).Value
    .Columns(5).Resize(filas, 2).Value = datos.Columns(5).Resize(filas, 2).Value
End With
Set datos = Nothing: Set destino = Nothing
End Sub

Hola james:

Creo que no me explique correctamente lo que busco es esto adjunto imagen, la primera macro se ajustaba a lo que deseaba pero faltaba algunos cambios como ubicar bien als columnas y la continuidad de la información, siempre en la columna A, se tendrá el correlativo desde 1 hasta infinito, la columna que va indicar donde debe continuar puede ser B o C(cualquier columna).

Espero con esto aclarar lo que deseo y agradezco tu tiempo en el apoyo brindado.

Saludos.

Este es el resultado de la macro modificada

y esta es la macro

Sub COPIAR_COLUMNAS()
Set H1 = Worksheets("DATA")
Set H2 = Worksheets("VENTAS")
FILAS = WorksheetFunction.CountA(H1.Range("B:B")) - 1
COL = H1.Range("A2").CurrentRegion.Columns.Count - 1
Set ORIGEN = H1.Range("B3").Resize(FILAS, COL)
FILAS2 = WorksheetFunction.CountA(H2.Range("B:B")) - 1
COL2 = H2.Range("A2").CurrentRegion.Columns.Count - 1
If FILAS2 = 1 Then Set DESTINO = Range("B3").Resize(FILAS, COL)
If FILAS2 > 1 Then Set DESTINO = H2.Range("B3").Rows(FILAS2 + 1).Resize(FILAS, COL)
With DESTINO
    .Columns(1).Resize(FILAS, 2).Value = ORIGEN.Columns(1).Resize(FILAS, 2).Value
    .Columns(4).Value = ORIGEN.Columns(5).Value
    .Columns(6).Value = ORIGEN.Columns(6).Value
End With
Set DESTINO = Nothing: Set ORIGEN = Nothing
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas