0

我正在运行一个复制粘贴宏,但是当我运行它时,它会不断将我的公式范围更改为行的最后一行。

例如,我原来的 VLOOKUP 公式看起来从$D$2:$G$5000,但是当我运行我的宏时,它会将其更改为$D$2:$G$12541254 是数据所在的最后一行。

这是复制+粘贴功能:

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

有任何想法吗?

4

2 回答 2

0

您可以使用INDIRECT()函数,因此公式将始终引用您希望的行。这是一个简单的示例(请参阅此链接以获取更多详细信息):

=SUM(INDIRECT("A1:A6"))
于 2012-12-06T19:10:12.903 回答
0

首先,您使用的是 pastevalues,因此您不会在第二页上获得任何公式,但您的错误在于代码的最后一行

shPriorWeek.Range("A" & lr - 2 & ":A10000").EntireRow.Delete

因为您的公式与您要删除的范围重叠,所以 Excel 会自动调整 vlookup 公式。

我建议在粘贴值之前删除您的数据。

*如果公式已经在页面上,则在阅读评论后进行编辑,则此解决方案将不起作用,我将根据 tim 的建议使用 clearcontents。

于 2012-12-06T19:10:27.567 回答