values sheet only entire destination another all excel vba copy row paste

excel - sheet - ¿Cómo especificar la fila de inicio para una "columna de copia vba"?



paste values vba (1)

Estoy usando la siguiente cadena para copiar una columna de una hoja a otra

Dim wsCore As Worksheet Dim wsData As Worksheet Set wsCore = Sheets("R2 Data Dump") Set wsData = Sheets("Active") Dim rowNumber As Integer Dim cellFormulas As Variant Dim cellFormulas1 As Variant Dim counter As Integer counter = 0 Dim currentCell As String Dim importSheetCell As Variant Dim importSheetOffset As Variant Dim contractnum As Integer Dim pt As PivotTable Dim ws As Worksheet Dim pc As PivotCache Dim lastrow As Long Set wsCore = Sheets("R2 Data Dump") Set wsData = Sheets("Active") Sheets("R2 Data Dump").Visible = True Sheets("R2 Data Dump").Select rowNumber = ActiveSheet.UsedRange.Rows.Count With wsCore Startrow = 3 wsCore.Columns("W").Copy Destination:=wsData.Columns("A") wsCore.Columns("B").Copy Destination:=wsData.Columns("B") wsCore.Columns("C").Copy Destination:=wsData.Columns("C") wsCore.Columns("D").Copy Destination:=wsData.Columns("D") End With.

Entonces, lo que hace es copiar las columnas particulares de una hoja y pegarla en la columna especificada de la hoja de destino. Mi problema es que la acción comienza a pegar la celda copiada desde la hoja de origen a la primera fila en la celda de destino. Lo que me gustaría saber es cómo puedo establecer un número de fila donde comenzaría a pegar en lugar de a la fila 1.


Normalmente, iría a la primera celda en blanco de la columna (mirando de abajo hacia arriba).

With Intersect(wsCore.Columns("A:W"), wsCore.UsedRange) .Columns("W").Copy Destination:=wsData.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0) .Columns("B").Copy Destination:=wsData.Cells(Rows.Count, "B").End(xlUp).Offset(1, 0) .Columns("C").Copy Destination:=wsData.Cells(Rows.Count, "C").End(xlUp).Offset(1, 0) .Columns("D").Copy Destination:=wsData.Cells(Rows.Count, "D").End(xlUp).Offset(1, 0) End With

Si desea especificar una fila, declare una variable larga y úselo.

Dim rw As Long rw = 10 With Intersect(wsCore.Columns("A:W"), wsCore.UsedRange) .Columns("W").Copy Destination:=wsData.Cells(rw, "A") .Columns("B").Copy Destination:=wsData.Cells(rw, "B") .Columns("C").Copy Destination:=wsData.Cells(rw, "C") .Columns("D").Copy Destination:=wsData.Cells(rw, "D") End With

He usado Intersect para evitar tratar de copiar una columna completa en una columna que no comienza en la primera fila. Una columna completa no cabrá.