0

我试图找出代码来删除我复制的数据的最后一行之后的所有行

我正在将数据从工作表 A 复制到工作表 B。工作表 B 中已经有数据。如果工作表 A 中的行数小于工作表 B,我想从工作表 A 中删除所有未复制到工作表 B 中的行。

例如:工作表 A = 50 行工作表 B = 60 行。我将工作表 A 复制到工作表 B,我想删除不属于工作表 A 的 10 行。

到目前为止,这是我的代码:

Dim shCurrentWeek As Worksheet
Dim shPriorWeek As Worksheet
Dim lr3 As Long

Set shCurrentWeek = ActiveWorkbook.Sheets("Current Week")
Set shPriorWeek = ActiveWorkbook.Sheets("Prior Week")
lr3 = shPriorWeek.Range(Rows.Count, "A").End(xlUp).Row

'Copies necessary rows in CurrentWeek tab to PriorWeek tab
shCurrentWeek.Range("A4:X" & lr).Copy shPriorWeek.Range("A2")
shPriorWeek.Range("A4:X" & lr3 + 1 & ":A" & Rows.Count).EntireRow.Delete

我相对确定我的 lr3 设置错误......不知道如何修复。

谢谢!

4

2 回答 2

2

由于您的代码说shCurrentWeek.Range("A4:X" & lr).Copy shPriorWeek.Range("A2")(换句话说,您正在从 [starting row 4] 复制到 [starting row 2]),您可以忘记lr3并执行以下操作(我相信):

shCurrentWeek.Range("A4:X" & lr).Copy shPriorWeek.Range("A2")
shPriorWeek.Range("A" & lr-2 & ":A10000").EntireRow.Delete

希望这可以帮助

于 2012-11-27T15:48:13.670 回答
1

你想lr3成为最后一行的行号(不是与粘贴数据相比的偏移量:

lr3 = shPriorWeek.Rows.Count

然后删除语句应为:

shPriorWeek.Range("A4:A" & lr3).EntireRow.Delete

或者,首先清除然后粘贴(如评论中所建议)也是一种好方法,而且非常干净。

于 2012-11-27T15:45:26.287 回答