Excel 如何基于文本值在工作表之间复制行
我试图根据行H列中出现的特定文本值(“是”),将整行从一个工作表复制到另一个工作表 我找到了此代码,希望将其更改为在工作簿中的多个工作表中搜索。我读过关于使用数组的内容,但不知道如何实现它 它不需要检查前1000行,如果需要更改,整个工作表就可以了 多谢各位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
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希望它在工作簿中的多个工作表中循环。