复制行

时间:2017-07-17 19:28:47

标签: excel-vba vba excel

我使用以下For循环将行从一个工作表复制到另一个工作表,具体取决于列中是否存在条件。我已经开始了一个新项目,我需要复制数万行,而且性能并不像我想的那么快。我想知道是否有更有效的方法来完成同样的任务。我很感激任何建议。

Sub CopyThings()

    Dim Source As Worksheet
    Dim Target As Worksheet
    Dim c As Range
    Dim CriteriaRange As Range
    Dim CriteriaString As String
    Dim LastRow As Long
    Dim j As Integer
    Set Source = Worksheets("source data")
    Set Target = Worksheets("target sheet")
    LastRow = Source.Cells(Rows.Count, 1).End(xlUp).Row

    With Source
        Set CriteriaRange = Source.Range(.Cells(2, 5), .Cells(LastRow, 5))
    End With

    j = 2
        For Each c In CriteriaRange
            CriteriaString = c.Text
                Select Case CriteriaString
                    Case Is = "thing to copy"
                        Source.Rows(c.Row).Copy Target.Rows(j)
    j = j + 1
                End Select
            Next c

    Source.Rows(1).Copy Target.Rows(1)

End Sub

1 个答案:

答案 0 :(得分:2)

您可以尝试在一个复制操作中复制所有匹配的行:

Sub CopyThings()
    With Worksheets("source data").UsedRange
        .AutoFilter
        .AutoFilter Field:=5, Criteria1:="=thing to copy"
        .Copy Worksheets("target sheet").Range("A1")
    End With
End Sub