简体   繁体   中英

How to copy specific columns from one sheet and paste in another sheet in a different range at the first row?

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM