我试图找出删除复制数据最后一行之后所有行的代码
我正在将数据从工作表A复制到工作表B.工作表B中已经有数据。如果工作表A中的行数小于工作表B,我想删除未从工作表A复制到工作表B中的所有行。
EG:工作表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设置错误...不确定如何解决。
谢谢!
答案 0 :(得分:2)
由于您的代码显示shCurrentWeek.Range("A4:X" & lr).Copy shPriorWeek.Range("A2")
(换句话说,您正在从[起始行4]复制到[起始行2]),您可能会忘记lr3
并执行以下(我相信):
shCurrentWeek.Range("A4:X" & lr).Copy shPriorWeek.Range("A2")
shPriorWeek.Range("A" & lr-2 & ":A10000").EntireRow.Delete
希望这有帮助
答案 1 :(得分:1)
您希望lr3
成为最后一行的行号(不是与您粘贴的数据相比的偏移量:
lr3 = shPriorWeek.Rows.Count
然后删除语句应为:
shPriorWeek.Range("A4:A" & lr3).EntireRow.Delete
或者首先清除那些粘贴(如评论中所建议的)也是一种好方法,而且非常干净。