让excel将整行粘贴到新工作表的下一个可用位置,而不是覆盖已有的数据
如果列包含关键字,我将使用此代码复制/粘贴整行。我将宏指定给一个按钮。它可以工作,但是如果我得到一个标记为“完成”的新项目并再次按下按钮,它会删除“完成”工作表上的所有内容并粘贴新信息。我想把它贴在最后一行下面让excel将整行粘贴到新工作表的下一个可用位置,而不是覆盖已有的数据,excel,vba,Excel,Vba,如果列包含关键字,我将使用此代码复制/粘贴整行。我将宏指定给一个按钮。它可以工作,但是如果我得到一个标记为“完成”的新项目并再次按下按钮,它会删除“完成”工作表上的所有内容并粘贴新信息。我想把它贴在最后一行下面 Dim i As long Dim p As long Dim Source As Worksheet Dim Target As Worksheet Set Source = ActiveWorkbook.Worksheets("In Prog
Dim i As long
Dim p As long
Dim Source As Worksheet
Dim Target As Worksheet
Set Source = ActiveWorkbook.Worksheets("In Progress")
Set Target = ActiveWorkbook.Worksheets("Complete")
p = 3 ' Start copying to row 3 in target sheet
Dim lastrow As Integer: lastrow = Source.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
For i = lastrow To 3 Step -1
If Source.Range("B" & i).Value = "Complete" Then
Source.Rows(i).Copy Target.Rows(p)
Source.Rows(i).EntireRow.Delete
p = p + 1
End If
Next
End Sub
在谷歌搜索之后,我似乎需要
lastrow=Sheet2.范围(“A99999”).结束(xlUp).行+1.
我是否有点接近我需要解决的问题?感谢您的帮助。工作版本:
Sub TransferComplete()
Dim i As long
Dim p As long
Dim Source As Worksheet
Dim Target As Worksheet
Set Source = ActiveWorkbook.Worksheets("In Progress")
Set Target = ActiveWorkbook.Worksheets("Complete")
p = Target.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row + 1 ' Start copying to last row in target sheet
Dim lastrow As long: lastrow = Source.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
For i = lastrow To 3 Step -1
If Source.Range("B" & i).Value = "Complete" Then
Source.Rows(i).Copy Target.Rows(p)
Source.Rows(i).EntireRow.Delete
p = p + 1
End If
Next
End Sub
我删除了
p=3
并将其替换为p=Target.Cells.Find(“*”,searchorder:=xlByRows,searchdirection:=xlPrevious)。行+1
这是否回答了您的问题?也不要使用Integer
,使用Long
。是的,我测试了它,但它对我不起作用,所以我发了帖子,想知道我是否在正确的轨道上。谢谢BigBen。我会读一下,看看能不能解决。你的问题是你正在使用p=3
开始粘贴到Target
工作表。因此,当您再次启动宏时,它将覆盖Target
工作表上的每一行。您需要为每个工作表标注不同的最后一行变量。