AdvancedFilter一次可以复制多行吗?

时间:2015-06-22 17:45:06

标签: excel vba excel-vba

我一直在使用AdvancedFilter查看工作表,然后将符合条件的行复制并粘贴到另一个工作表中。 (AdvancedFilter成功运行)。

我现在想知道是否可以在每个AdvancedFilter正面识别期间复制其他行。

例如,每次AdvancedFilter找到满足预定义条件的值时,它是否可以复制该行下面的12行并将其带到另一个工作表中?

这是我成功的AdvancedFilter代码:

Sheet4.Range("A1:X10000").AdvancedFilter , CriteriaRange:=Sheet5.Range("B4:B5"), CopyToRange:=Sheet5.Range("A10:X10"), Unique:=False

另一种方法可能是使用for和if循环,我尝试过,但我不断收到1004错误或9错误。

有什么建议吗?

这是我的循环代码:

Sheet4.Select

Dim r As Long,endRow As Long,PasteRowIndex As Long

endRow = 100
PasteRowIndex = 11

For r = 2 To endRow

    If Cells(r, Columns("A").Column).Value = "Test" Then
        Rows(r).Select
        Selection.Copy

        Sheets("CompanyFilter").Select
        Rows(PasteRowIndex).Select
        ActiveSheet.Paste

        PasteRowIndex = PasteRowIndex + 1

        Sheet4.Select
    End If
Next r

1 个答案:

答案 0 :(得分:0)

我认为这应该适合你 -

Sub test()

Dim wsOrig As Worksheet
Set wsOrig = ActiveSheet

Dim wsDest As Worksheet
Set wsDest = Sheets("CompanyFilter")
Dim r As Long, endRow As Long, PasteRowIndex As Long

endRow = 100
PasteRowIndex = 11

For r = 2 To endRow

    If Cells(r, "A").Value = "Test" Then
        For i = r To r + 11
            wsDest.Range("A" & PasteRowIndex).EntireRow = wsOrig.Range("A" & i).EntireRow
            PasteRowIndex = PasteRowIndex + 1
        Next
    r = r + 11
    End If
Next
End Sub