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 中执行其他常见任务:

VBA:如何查找最后使用的行
VBA:如何计算范围内的行数
VBA:如何计算使用的列数

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注