excel将包含特定单词的行按相同顺序复制到另一个工作表中

excel将包含特定单词的行按相同顺序复制到另一个工作表中,excel,vba,Excel,Vba,我有一张名为“在此处粘贴可用性数据”的表格,a栏有数字,C栏和D栏有日期和时间,E栏有摘要。B栏有“确定”或“错误”两个字。我要做的是将B列中只有“ERROR”一词的所有行复制到名为“Availability”的新工作表中 数据从第3行开始,可能至少有700行数据 我需要一个宏,当数据每个月粘贴到“粘贴可用性数据此处”时,它会自动将数据复制到工作表“可用性”中 我尝试过使用IF函数,但它不想工作 Sub Test() For Each Cell In Sheets(1).Range("B:

我有一张名为“在此处粘贴可用性数据”的表格,a栏有数字,C栏和D栏有日期和时间,E栏有摘要。B栏有“确定”或“错误”两个字。我要做的是将B列中只有“ERROR”一词的所有行复制到名为“Availability”的新工作表中

数据从第3行开始,可能至少有700行数据

我需要一个宏,当数据每个月粘贴到“粘贴可用性数据此处”时,它会自动将数据复制到工作表“可用性”中

我尝试过使用IF函数,但它不想工作

Sub Test() 
  For Each Cell In Sheets(1).Range("B:B") 
    If Cell.Value = "ERROR" Then 
      matchRow = Cell.Row 
      Rows(matchRow & ":" & matchRow).Select 
      Selection.Copy 
      Sheets("Availability").Select 
      ActiveSheet.Rows(matchRow).Select 
      ActiveSheet.Paste 
      Sheets("Paste Availability Data Here").Select 
    End If 
  Next 
End Sub
附上工作表的图片


非常感谢

这可以解决问题,但您需要更改特定问题的索引和名称。发布另一个关于自动化的问题(尽管它已经得到了回答)

将wsh1设置为工作表
将wsh2设置为工作表
作为整数的Dim i
作为整数的Dim j
子条件_Copy()
设置wsh1=工作表(“表1”)
设置wsh2=工作表(“表2”)
i=1
j=1
当wsh1.Cells(i,2)”时执行此操作
如果wsh1.Cells(i,2)=“ERROR”,则
wsh1.Rows(i).复制wsh2.Rows(j)
j=j+1
如果结束
i=i+1
环
端接头

这可以完成任务,但您需要更改特定问题的索引和名称。发布另一个关于自动化的问题(尽管它已经得到了回答)

将wsh1设置为工作表
将wsh2设置为工作表
作为整数的Dim i
作为整数的Dim j
子条件_Copy()
设置wsh1=工作表(“表1”)
设置wsh2=工作表(“表2”)
i=1
j=1
当wsh1.Cells(i,2)”时执行此操作
如果wsh1.Cells(i,2)=“ERROR”,则
wsh1.Rows(i).复制wsh2.Rows(j)
j=j+1
如果结束
i=i+1
环
端接头

我实际上正在做类似的事情,你是想用某种按钮还是自动过程来完成这一点?我还需要它是一个自动过程我在上面贴的一个可以工作,但它在新的工作表上留下空白。我希望所有填充的行都是连续的,没有空行,其中包含OK的行were@CHaleStackOverflow不是请求代码的地方。自动化过程已经在其他问题中得到了回答。条件复制也有答案。可能的复制我实际上正在做类似的事情,你想通过某种按钮或自动过程来完成吗?我还需要它是一个自动过程我在上面贴了一个类似的工作,但它在新的工作表上留有空白。我希望所有填充的行都是连续的,没有空行,其中包含OK的行were@CHaleStackOverflow不是请求代码的地方。自动化过程已经在其他问题中得到了回答。条件复制也有答案。可能是
Dim wsh1 As Worksheet
Dim wsh2 As Worksheet
Dim i As Integer
Dim j As Integer

Sub Conditional_Copy()

Set wsh1 = Worksheets("Sheet1")
Set wsh2 = Worksheets("Sheet2")

i = 1
j = 1

Do While wsh1.Cells(i, 2) <> ""

    If wsh1.Cells(i, 2) = "ERROR" Then

        wsh1.Rows(i).Copy wsh2.Rows(j)

        j = j + 1

    End If

    i = i + 1

Loop

End Sub