我正在运行一个复制粘贴宏,但是当我运行它时,它会不断将我的公式范围更改为最后一行。
例如,我原来的VLOOKUP公式来自$D$2:$G$5000
,但是当我运行我的宏时,它会将其更改为$D$2:$G$1254
,其中1254是数据所在的最后一行。
这是复制+粘贴功能:
Sub START1()
Dim shCurrentWeek As Worksheet
Dim shPriorWeek As Worksheet
Dim lr As Long
Set shCurrentWeek = ActiveWorkbook.Sheets("Current Week")
Set shPriorWeek = ActiveWorkbook.Sheets("Prior Week")
lr = shCurrentWeek.Range("A" & Rows.Count).End(xlUp).Row
'Copies Current Week into Prior Week and deletes Rows in Prior week
shCurrentWeek.Range("A4:X" & lr).Copy
shPriorWeek.Range("A2").PasteSpecial xlPasteValues
shPriorWeek.Range("A" & lr - 2 & ":A10000").EntireRow.Delete
End Sub
任何想法?
答案 0 :(得分:0)
您可以使用INDIRECT()功能,以便公式始终引用您想要的行。这是一个简单的例子(请参阅this link以获取更详细的信息):
=SUM(INDIRECT("A1:A6"))
答案 1 :(得分:0)
首先,您使用的是粘贴值,因此您不会在第二页上获得任何公式,但错误在于代码的最后一行
shPriorWeek.Range("A" & lr - 2 & ":A10000").EntireRow.Delete
由于您的公式与您删除excel的范围重叠,因此会自动调整vlookup公式。
我建议在粘贴值之前删除您的数据。
*如果公式已经在页面上,则在阅读评论后进行编辑,然后此解决方案将无效,我会根据tim的建议使用clearcontents。