2016-05-10 255 views
0

我有以下問題。我想從工作表中複製包含值的整個列,並將其粘貼到另一個工作表。我有下面的代碼這樣做,複製和粘貼多列

with copySheet.Range("A2:A400") 
pasteSheet.Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).resize(.rows.count, .columns.count) = .value 
end with 

在這裏,我複製列A值,直到第400行,我想這是可變的,所以我想複製,直到該列中的最終值,並將其粘貼到列B.

此外,如果我想複製列B並將其粘貼到C列,並使用與上面所寫的代碼相同的代碼與B和C值進行交換,如下所示;

with copySheet.Range("B2:B400") 
pasteSheet.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).resize(.rows.count, .columns.count) = .value 
end with 

此代碼在使用了上面的第一個之後,不會將列粘貼到列A.有誰知道如何解決這個問題?

回答

0

創建一個變量來捕獲所需複製列中的最後一行數據,然後在您的With語句中使用該變量。

Sub test() 

Dim copySheet As Worksheet 
Dim pasteSheet As Worksheet 
Dim lRow As Long 

Set copySheet = Sheets("copySheet") 
Set pasteSheet = Sheets("pasteSheet") 

'Determine last row of Column A in copySheet 
lRow = copySheet.Cells(copySheet.Rows.Count, 1).End(xlUp).Row 

With copySheet.Range("A2:A" & lRow) 
pasteSheet.Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).Resize(.Rows.Count, .Columns.Count) = .Value 
End With 

'Determine last row of Column B in copySheet 
lRow = copySheet.Cells(copySheet.Rows.Count, 2).End(xlUp).Row 

With copySheet.Range("B2:B" & lRow) 
pasteSheet.Cells(Rows.Count, "C").End(xlUp).Offset(1, 0).Resize(.Rows.Count, .Columns.Count) = .Value 
End With 

End Sub 

然後,您可以採取這一步,分配Long變量來解釋你需要多少列複製,並添加For循環都要經過每一個。

出於好奇,爲什麼不復制整張紙,然後在pasteSheet上的列A前插入一個新列?

0

也許你可以試試這個嗎?這是一個有點蠻力....第二個問題,你可以改變B和C

Columns("A").Select 
Selection.copy 
Range("B1").Select 
ActiveSheet.Paste 
Range("A1").Select 
Application.CutCopyMode = False