我正在尝试从F列的范围中复制公式,并将每个列粘贴到范围中的最后一列。
粘贴到范围时,复制单元格仅粘贴到F列而不是选定的范围。
代码:
Dim lastrow As Long
Dim lastcol As Long
Dim i As Long
Range("f2:f" & lastrow).Select
Selection.Copy
lastcol = Cells(6, Columns.Count).End(xlToLeft).Column
Range("f2:f" & lastrow).Select
With ActiveCell
.Resize(lastrow, lastcol - 6).Select
End With
Selection.PasteSpecial xlPasteFormulas
答案 0 :(得分:1)
首先,您lastrow
尚未设定!您必须为其分配一个值,如下所示:
lastrow = Cells(Rows.Count, 6).End(xlUp).Row
这将找到F
列中的最后一行。
现在,只使用Range("f2:f" & lastrow).Copy
来避免Select
(建议)。
要将其粘贴到最后一列,您必须这样做:
Range(Cells(2, lastcol), Cells(lastrow, lastcol).PasteSpecial xlPasteFormulas
总而言之,请改用此代码:
Option Explicit
Sub CopyRange()
'use camel case or underscores for better readability
Dim lastRow As Long, lastCol As Long
lastRow = Cells(Rows.Count, 6).End(xlUp).Row
'I changed the row here to second row (instead of 6th)
lastCol = Cells(2, Columns.Count).End(xlToLeft).Column
Range("f2:f" & lastrow).Copy
Range(Cells(2, lastCol), Cells(lastRow, lastCol).PasteSpecial xlPasteFormulas
End Sub
附加说明:我将其打包在Sub
中并使用Option Explicit
,建议您避免运行时错误。