将单元格复制到最后一个空白单元格并粘贴到新工作表中

时间:2016-04-21 18:13:53

标签: vba excel-vba excel

我想复制一系列单元格,即从F列的第7行到列K,并将复制的单元格粘贴到另一个工作表(Sheet2)中。 该范围应该从第7行复制到最后一个空白单元格,每次在同一范围内替换之前的值时,它应该从B1到B6粘贴到(Sheet2)中。

请帮助我从头开始。

我已按照建议进行了一些更改,但我希望代码循环使用sheet(2)中的值并通过仅在行A5中替换AG5来粘贴表3中的值。 但是下面的代码只是粘贴第一行。它应该从工作表2中的第一行循环到最后一个空单元格并粘贴到范围A5到AG5中的工作表3中。

Sub LoopCopy()

Dim EndRow As Integer

'Find the last row with data

EndRow = ThisWorkbook.Sheets(2).Range("D7").End(xlDown).Row
'Set the range in sheet 2 to the range you want to copy in sheet 1
ThisWorkbook.Sheets(3).Range("A5", "AG5").Value = ThisWorkbook.Sheets(2).Range("F7", "AL" & EndRow).Value
End Sub

1 个答案:

答案 0 :(得分:1)

不使用剪贴板是一种很好的做法,以防您在代码运行时复制某些内容并粘贴而不是您想要的内容。您可以将一个范围值设置为另一个,而不是使用复制和粘贴。对于一个看起来像这样的单元格。

ThisWorkbook.Sheets(2).Range("A1").Value = ThisWorkbook.Sheets(1).Range("A1").Value

这样可以在不使用剪贴板的情况下将工作表1中的A1值有效地复制到工作表2中的A1。您可以对一系列单元格执行相同操作,如下所示。

ThisWorkbook.Sheets(2).Range("A1:C3").Value = ThisWorkbook.Sheets(1).Range("A1:C3").Value

如果您想要聪明并动态定义范围,可以使用以下步骤进行操作。

Dim EndRow As Integer

'Find the last row with data
EndRow = ThisWorkbook.Sheets(1).Range("F7").End(XlDown).Row
'Set the range in sheet 2 to the range you want to copy in sheet 1
ThisWorkbook.Sheets(2).Range("B1","G" & EndRow - 6).Value = ThisWorkbook.Sheets(1).Range("F7","K" & EndRow).Value

我希望这有帮助!