Excel 如何复制最后一行数据的范围并粘贴到它下面的行中

Excel 如何复制最后一行数据的范围并粘贴到它下面的行中,excel,vba,Excel,Vba,我试图创建一个宏来获取工作表上的最后一行数据,并将其复制/粘贴到它前面的行中。 我需要它来提取B-N列中的数据。 我可以用下面的代码只为B列做这件事,但我不知道语法是什么让它为B-N列做这件事-有人能帮忙吗 Sub copylastrow() Worksheets("Sheet1").Activate Range("B" & Rows.Count).End(xlUp).Copy Range("B" & Rows.Co

我试图创建一个宏来获取工作表上的最后一行数据,并将其复制/粘贴到它前面的行中。 我需要它来提取B-N列中的数据。 我可以用下面的代码只为B列做这件事,但我不知道语法是什么让它为B-N列做这件事-有人能帮忙吗

Sub copylastrow()

Worksheets("Sheet1").Activate

Range("B" & Rows.Count).End(xlUp).Copy
Range("B" & Rows.Count).End(xlUp).Offset(1).PasteSpecial

End Sub

代码中的一些注释:

  • 定义源工作表(无需激活)
  • 查找特定列中的最后一行
  • 根据列和最后一行设置源范围
  • 在不复制的情况下传输值会更快
假设:

  • 列B是获取最后一行的引用
  • 你只是在粘贴值
阅读注释并调整代码以满足您的需要

代码

Public Sub CopyLastRow()
    
    ' Define the source sheet (no need to activate it)
    Dim sourceSheet As Worksheet
    Set sourceSheet = ThisWorkbook.Worksheets("Sheet1")
    
    ' Find the last row in an specific column
    Dim lastRow As Long
    lastRow = sourceSheet.Range("B" & sourceSheet.Rows.Count).End(xlUp).Row
    
    ' Set the source range according to columns and last row
    Dim sourceRange As Range
    Set sourceRange = sourceSheet.Range("B" & lastRow & ":N" & lastRow)
    
    ' Transfer values without copying them is faster
    sourceRange.Offset(1).Value = sourceRange.Value

End Sub

让我知道它是否有效

您要查找最后一行数据的列是什么,B还是N?您是否粘贴了特殊值?谢谢-我声明了工作表b/c还有大约40张其他工作表我需要相同的流程-&我的目标是用公式将最后一行数据(在我的例子中是第46行)复制到第47行-这就是我为什么没有传输它们-有任何建议吗?您知道所有工作表的名称吗?所有工作表都在同一工作簿中吗?它总是第46行吗?我知道所有的名字,它总是数据集中被复制到下一行的最后一行(所以这个月是46->47,下个月是47->48,等等),是的,它们都在同一个工作簿中。但是我实际上调整了你给我的代码,使之能够携带公式&解决了我需要解决的所有问题-我非常感谢你的帮助!令人惊叹的。如果代码有帮助,考虑对答案进行标记,这样别人就可以找到答案。