2017-05-25 114 views
0

我是這個vba /宏的新手。我需要複製特定的列並將其粘貼到另一個工作表中。我使用從前一個線程提供的代碼。但是,我需要將數據粘貼到第一行。目前,數據粘貼在第二行。以下是代碼:如何從一張紙上覆制特定列並粘貼到第一行的另一張紙上?

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 

sheet1中的頭也不需要複製。

謝謝。 Link from the previous thread. Assistance was given by Tim Wilkinson

上述問題昨天由@sktneer解決。數據已成功粘貼在第一行。

但是,與相同的情況有關,我怎樣才能從Sheet1複製過濾的數據? 我已經在autofilter代碼中指定了複製粘貼過程的標準,但不知道我是否正確地完成了它。

下面是調整後的代碼:

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 

請多關照傢伙。

回答

0

也許這...

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 
+0

感謝@sktneer了迅速反應。這是工作。 – hanaa

+0

不客氣哈娜!很高興我能幫上忙。 – sktneer

+0

@hanaa那是什麼?你爲什麼刪除所選答案的標籤? – sktneer

相關問題