I am a newbie to this vba/macro. i need to copy specific columns and paste it in another worksheet. Im using the code that being provided from previous thread. however, i need the data to be pasted in 1st row. currently, the data pasted in 2nd row. below are the code:
Sub copypaste()
Dim lastrow As Integer, erow As Integer, sheet1 As Worksheet, sheet2 As
Worksheet, icol As Long
Set sheet1 = Worksheets("Sheet1")
Set sheet2 = Worksheets("Sheet2")
lastrow = sheet1.Cells(Rows.Count, 1).End(xlUp).Row
For i = 4 To lastrow
erow = sheet2.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Row
sheet2.Cells(erow, 2) = sheet1.Cells(i, 1)
sheet2.Cells(erow, 3) = sheet1.Cells(i, 2)
sheet2.Cells(erow, 7) = sheet1.Cells(i, 3)
sheet2.Cells(erow, 5) = sheet1.Cells(i, 5)
sheet2.Cells(erow, 4) = sheet1.Cells(i, 6)
sheet2.Cells(erow, 8) = sheet1.Cells(i, 11)
sheet2.Cells(erow, 9) = sheet1.Cells(i, 8)
sheet2.Cells(erow, 13).Value = sheet1.Cells(i, 9).Value
Next i
Worksheets("Sheet1").Columns().AutoFit
Cells(1, 1).Activate
End Sub
The header from sheet1 also is not required to be copied over.
Thanks. Link from the previous thread. Assistance was given by Tim Wilkinson
The above issue was solved yesterday by @sktneer. The data had successfully pasted in the 1st row.
However, related to the same case, how can i copy the filtered data from sheet1? I've put in the autofilter code to specify the criteria for the copypaste process but not sure whether i've done it correctly or not.
Below is the adjusted code:
sub copypaste()
Dim lastrow As Integer, erow As Integer, sheet1 As Worksheet, sheet2 As
Worksheet, lrow As Long
Set sheet1 = Worksheets("Sheet1")
Set sheet2 = Worksheets("Sheet2")
strSearch = "LOCAL"
lastrow = sheet1.Cells(Rows.Count, 1).End(xlUp).Row
With sheet1
AutoFilterMode = False
lrow = sheet1.Range("L" & .Rows.Count).End(xlUp).Row
With .Range("L3:L" & lrow)
.AutoFilter Field:=1, Criteria1:="=*" & strSearch & "*"
For i = 4 To lastrow
If sheet2.Cells(1, 2) = "" Then
erow = 1
Else
erow = sheet2.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Row
End If
sheet2.Cells(erow, 2) = sheet1.Cells(i, 1)
sheet2.Cells(erow, 3) = sheet1.Cells(i, 2)
sheet2.Cells(erow, 7) = sheet1.Cells(i, 3)
sheet2.Cells(erow, 5) = sheet1.Cells(i, 5)
sheet2.Cells(erow, 4) = sheet1.Cells(i, 6)
sheet2.Cells(erow, 8) = sheet1.Cells(i, 11)
sheet2.Cells(erow, 9) = sheet1.Cells(i, 8)
sheet2.Cells(erow, 13).Value = sheet1.Cells(i, 9).Value
Next
End With
AutoFilterMode = False
End With
Worksheets("Sheet1").Columns().AutoFit
Cells(1, 1).Activate
End Sub
Thanking you guys in advance.
Maybe this...
For i = 4 To lastrow
If Sheet2.Cells(1, 2) = "" Then
erow = 1
Else
erow = Sheet2.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Row
End If
Sheet2.Cells(erow, 2) = Sheet1.Cells(i, 1)
Sheet2.Cells(erow, 3) = Sheet1.Cells(i, 2)
Sheet2.Cells(erow, 7) = Sheet1.Cells(i, 3)
Sheet2.Cells(erow, 5) = Sheet1.Cells(i, 5)
Sheet2.Cells(erow, 4) = Sheet1.Cells(i, 6)
Sheet2.Cells(erow, 8) = Sheet1.Cells(i, 11)
Sheet2.Cells(erow, 9) = Sheet1.Cells(i, 8)
Sheet2.Cells(erow, 13).Value = Sheet1.Cells(i, 9).Value
Next i
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.