首页 > 解决方案 > 将工作表之间的范围复制到最后一行

问题描述

寻找简单、优雅的解决方案,使用当前形式的范围附加到另一个工作表的最后一行。

范围:

        Sheets("conf_9").Columns(5).Copy Destination:=Sheets("Rec_9").Columns(9)
        Sheets("conf_9").Columns(6).Copy Destination:=Sheets("Rec_9").Columns(10)
        Sheets("conf_9").Columns(7).Copy Destination:=Sheets("Rec_9").Columns(7)
        Sheets("conf_9").Columns(8).Copy Destination:=Sheets("Rec_9").Columns(8)
        Sheets("conf_9").Columns(12).Copy Destination:=Sheets("Rec_9").Columns(6)

对类似问题的几个回答似乎过于复杂且与Columns用法不兼容 - 是的,我是 VBA 新手。例如,Columns(number) & last row拒绝插入表达式语法。

非常感谢。

标签: excelvba

解决方案


请尝试下一个代码。不必复制整列。代码计算工作表的最后填充行以复制列和目标工作表列的第一个空行:

Sub AppendToOtherSheet()
  Dim shC As Worksheet, wsR As Worksheet, lastRowC As Long, lastRowR As Long
  Set shC = Sheets("conf_9")
  Set wsR = Sheets("Rec_9")
   lastRowC = shC.Range("E" & Rows.Count).End(xlUp).row
   lastRowR = wsR.Range("I" & Rows.Count).End(xlUp).row + 1
   
   shC.Range("E2:E" & lastRowC).Copy Destination:=wsR.Cells(lastRowR, 9)
   shC.Range("F2:F" & lastRowC).Copy Destination:=wsR.Cells(lastRowR, 10)
   shC.Range("G2:G" & lastRowC).Copy Destination:=wsR.Cells(lastRowR, 7)
   shC.Range("H2:H" & lastRowC).Copy Destination:=wsR.Cells(lastRowR, 8)
   shC.Range("L2:L" & lastRowC).Copy Destination:=wsR.Cells(lastRowR, 6)
End Sub

上面的代码假定所有列的行数相同,并且从列复制的工作表具有列标题。

如果讨论中的列没有相同的行数,则lastRowC必须lastRowR对要复制的每一列进行计算。如果没有列标题,则要复制的范围将(例如)从第一个复制代码行中的“E1”而不是“E2”开始。


推荐阅读