Excel 如何基于文本值在工作表之间复制行

Excel 如何基于文本值在工作表之间复制行,excel,vba,Excel,Vba,我试图根据行H列中出现的特定文本值(“是”),将整行从一个工作表复制到另一个工作表 我找到了此代码,希望将其更改为在工作簿中的多个工作表中搜索。我读过关于使用数组的内容,但不知道如何实现它 它不需要检查前1000行,如果需要更改,整个工作表就可以了 多谢各位 Sub CopyYes() Dim c As Range Dim j As Integer Dim Source As Worksheet Dim Target As Worksheet ' Cha

我试图根据行H列中出现的特定文本值(“是”),将整行从一个工作表复制到另一个工作表

我找到了此代码,希望将其更改为在工作簿中的多个工作表中搜索。我读过关于使用数组的内容,但不知道如何实现它

它不需要检查前1000行,如果需要更改,整个工作表就可以了

多谢各位

Sub CopyYes()
    Dim c As Range
    Dim j As Integer
    Dim Source As Worksheet
    Dim Target As Worksheet

    ' Change worksheet designations as needed
    Set Source = ActiveWorkbook.Worksheets("Jan 19")
    Set Target = ActiveWorkbook.Worksheets("Storage")

    J = 1     ' Start copying to row 1 in target sheet
    For Each c In Source.Range("H1:H1000")   ' Do 1000 rows
        If c = "yes" Then
           Source.Rows(c.Row).Copy Target.Rows(j)
           j = j + 1
        End If
    Next c
End Sub

我只需过滤您的范围,然后复制过滤后的数据,如下所示:

Option Explicit
Sub CopyYes()

    Dim LastRow As Long, Col As Long, Lrow As Long
    Dim Source As Worksheet, Target As Worksheet
    Dim arrws
    Dim HandleIt As Variant

    ' Change worksheet designations as needed
    Set Target = ThisWorkbook.Worksheets("Storage")

    arrws = Array("Jan 19", "Feb 19") 'add all the worksheets you need to loop through

    For Each Source In ThisWorkbook.Worksheets

        HandleIt = Application.Match(Source.Name, arrws, 0)
        If Not IsError(HandleIt) Then
            With Source
                .UsedRange.AutoFilter Field:=8, Criteria1:="yes"
                LastRow = .Cells(.Rows.Count, "H").End(xlUp).Row
                Col = .Cells(1, .Columns.Count).End(xlToLeft).Column
                Lrow = Target.Cells(Target.Rows.Count, 1).End(xlUp).Row + 1
                .Range("A2", .Cells(LastRow, Col)).SpecialCells(xlCellTypeVisible).Copy Target.Range("A" & Lrow)
            End With
        End If
    Next Source

End Sub

您只需一次就可以获得相同的输出,避免循环。

您的问题不够清楚。你能解释一下如何搜索多个工作表,然后复制哪个工作表等吗?您好,不只是在工作表“1月19日”中搜索“是”并将行复制到工作表“存储”中,我希望它也搜索其他工作表“2月19日”“3月19日”等,并将找到的所有行复制到“存储”中OP希望它在工作簿中的多个工作表中循环。