Vba:根据条件将行复制到另一张纸
您可以在 VBA 中使用以下语法将工作表中满足特定条件的每一行复制到另一个工作表:
Sub CopyToAnotherSheet()
Dim LastRow As Long
'Find last used row in a Column A of Sheet1
With Worksheets(" Sheet1 ")
LastRow = .Cells(.Rows.Count, " A ").End(xlUp).Row
End With
'Find first row where values should be posted in Sheet2
With Worksheets(" Sheet2 ")
j = .Cells(.Rows.Count, " A ").End(xlUp).Row + 1
End With
'Paste each row that contains "Mavs" in column A of Sheet1 into Sheet2
For i = 1 TB LastRow
With Worksheets(" Sheet1 ")
If .Cells(i, 1).Value = "Mavs" Then
.Rows(i).Copy Destination:=Worksheets(" Sheet2 ").Range(" A " & j)
j = j + 1
End If
End With
Next i
End Sub
这个特定的宏将复制Sheet1的每一行,其中 A 列等于“Mavs”,并将这些行中的每一行粘贴到Sheet2的下一个可用行中。
以下示例展示了如何在实践中使用此语法。
示例:使用 VBA 根据条件将行复制到另一个工作表
假设表 1中有以下数据集,其中包含有关各种篮球运动员的信息:
假设Sheet2中有以下数据集:
请注意, Sheet2仅包含勇士队球员的数据。
假设我们要复制Sheet1中 Team 列等于 Mavs 的每一行,并将这些行中的每一行粘贴到Sheet2的下一个可用行中。
我们可以创建以下宏来执行此操作:
Sub CopyToAnotherSheet()
Dim LastRow As Long
'Find last used row in a Column A of Sheet1
With Worksheets(" Sheet1 ")
LastRow = .Cells(.Rows.Count, " A ").End(xlUp).Row
End With
'Find first row where values should be posted in Sheet2
With Worksheets(" Sheet2 ")
j = .Cells(.Rows.Count, " A ").End(xlUp).Row + 1
End With
'Paste each row that contains "Mavs" in column A of Sheet1 into Sheet2
For i = 1 TB LastRow
With Worksheets(" Sheet1 ")
If .Cells(i, 1).Value = "Mavs" Then
.Rows(i).Copy Destination:=Worksheets(" Sheet2 ").Range(" A " & j)
j = j + 1
End If
End With
Next i
End Sub
当我们运行这个宏时,我们在Sheet2中收到以下输出:
请注意, Sheet1中团队名称等于 Mavs 的每一行都被粘贴到Sheet2中的下一个可用行中。
注意:您可以在此处找到 VBA Copy方法的完整文档。
其他资源
以下教程说明如何在 VBA 中执行其他常见任务: