[英]Copy row to next empty row of another sheet
我正在尝试根据几个条件将行复制到新表中。
我设法编写了一个宏,该宏可以找到一行并将其复制到新表中,但是不幸的是,我覆盖了以前的条目。
在stackoverflow上有一些解决方案-我搜索了诸如“将行复制到空行中的新表中”之类的内容-但我只是通过复制这些答案中的一些代码而无法使它们工作(没有正确理解代码)。
如何将结果复制到新表中的下一个空行?
Sub FilterAndCopy()
Dim lastRow As Long
Dim criterion As String
Dim team1 As String
Dim team2 As String
Dim team3 As String
criterion = "done"
team1 = "source"
team2 = "refine"
team3 = "supply"
Sheets("Sheet3").UsedRange.Offset(0).ClearContents
With Worksheets("Actions")
.range("$A:$F").AutoFilter
'filter for actions that are not "done"
.range("$A:$F").AutoFilter field:=3, Criteria1:="<>" & criterion
'filter for actions where "due date" is in the past
.range("$A:$F").AutoFilter field:=6, Criteria1:="<" & CLng(Date)
'FIRST TEAM
.range("$A:$F").AutoFilter field:=4, Criteria1:="=" & team1
'iff overdue actions exist, copy them into "Sheet3"
lastRow = .range("A" & .rows.Count).End(xlUp).row
If (lastRow > 1) Then
.range("A1:A" & lastRow).SpecialCells(xlCellTypeVisible).EntireRow.Copy _
Destination:=Sheets("Sheet3").range("A1")
End If
'SECOND TEAM
.range("$A:$F").AutoFilter field:=4, Criteria1:="=" & team2
'iff overdue items exist, copy them into "Sheet3"
lastRow = .range("A" & .rows.Count).End(xlUp).row
If (lastRow > 1) Then
'find last row with content and copy relevant rows
.range("A1:A" & lastRow).SpecialCells(xlCellTypeVisible).EntireRow.Copy _
Destination:=Sheets("Sheet3").range("A1")
End If
'THIRD STREAM
.range("$A:$F").AutoFilter field:=4, Criteria1:="=" & team3
'iff overdue items exist, copy them into "Sheet3"
lastRow = .range("A" & .rows.Count).End(xlUp).row
If (lastRow > 1) Then
'find last row with content and copy relevant rows
.range("A1:A" & lastRow).SpecialCells(xlCellTypeVisible).EntireRow.Copy _
Destination:=Sheets("Sheet3").range("A1")
End If
End With
End Sub
您只需要在新表中再次使用LastRow代码。
所以尝试
If (lastRow > 1) Then
LastRow2 = worksheets("Sheet3").range("A" & rows.count).end(xlup).row + 1
'find last row with content and copy relevant rows
.range("A1:A" & lastRow).SpecialCells(xlCellTypeVisible).EntireRow.Copy _
Destination:=Sheets("Sheet3").range("A" & LastRow2)
End If
这会找到工作表3的最后使用的行,并将其粘贴到它下面。
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.