复制和粘贴多个列

时间:2016-05-10 14:13:33

标签: excel vba excel-vba

我有以下问题。我想从工作表中复制包含值的整个列,并将其粘贴到另一个工作表。我有以下代码,这样做;

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列。有谁知道如何解决这个问题?

2 个答案:

答案 0 :(得分: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栏前插入一个新栏?

答案 1 :(得分:0)

也许你可以试试这个?这是一个有点暴力....对于第二个问题,你可以改变B和C

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