我有以下问题。我想从工作表中复制包含值的整个列,并将其粘贴到另一个工作表。我有以下代码,这样做;
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 :(得分: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