Vba Excel将匹配的单元格行从选项卡复制到同一工作簿中的摘要选项卡

Vba Excel将匹配的单元格行从选项卡复制到同一工作簿中的摘要选项卡,vba,excel,Vba,Excel,我有一个工作簿,我需要在G行(第7行)上找到NO值,然后复制NO属于名为summary的新工作表(选项卡)的行,在我的情况下,它列为工作表18 我需要在所有表格上搜索,尽管从表格1到表格17的G行中都没有 我有一个我在网上找到的代码,并修改它以符合我的标准。但它似乎并没有像我希望的那样起作用,它不断地出现错误 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Dim nxtRow As Integer`ente

我有一个工作簿,我需要在G行(第7行)上找到NO值,然后复制NO属于名为summary的新工作表(选项卡)的行,在我的情况下,它列为工作表18

我需要在所有表格上搜索,尽管从表格1到表格17的G行中都没有

我有一个我在网上找到的代码,并修改它以符合我的标准。但它似乎并没有像我希望的那样起作用,它不断地出现错误

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim nxtRow As Integer`enter code here`
'Determine if change was to Column G (7)
If Target.Column = 7 Then
'If Yes, Determine if cell = NO
If Target.Value = "NO" Then
'If Yes, find next empty row in Sheet 18
nxtRow = Sheets(18).Range("F" & Rows.Count).End(xlUp).Row + 1
'Copy changed row and paste into Sheet 18
Target.EntireRow.Copy _
Destination:=Sheets(18).Range("A" & nxtRow)
End If
End If
End Sub
先谢谢你。 瓦西里斯


Vba对此不是必需的。一个简单的方法是使用公式和过滤器。
向工作表中添加一列,查看上一行并检查是否有。然后过滤此列,然后只需复制并粘贴到摘要选项卡。

下面是相同的代码。它有两个子过程initiate和applyFilterAndCopy。在initiate中,您可以指定需要扫描的张数(sheetCount,在下面我提到的代码中为2)。在调用第一个子过程(initiate)中的第二个子过程时,您需要指定列号和正在搜索的文本作为第二个子过程的变量(调用applyFilterAndCopy(i,1,“No”)这里我提到的是1,即第一列和要在引号中搜索的字符串都是No)。请注意,工作表名称的格式必须为工作表****格式,汇总表名称应为汇总区分大小写,如您的说明所述

    Sub initiate()
     Worksheets("Summary").UsedRange.Delete
     Dim i As Integer, sheetCount As Integer
     sheetCount = 2
     For i = 1 To sheetCount
      Call applyFilterAndCopy(i, 1, "No")
     Next i
    End Sub

    Sub applyFilterAndCopy(sheetNo As Integer, searchInColumn As Integer, textToSearch As String)
     Worksheets("Sheet" & sheetNo).AutoFilterMode = False
     Worksheets("Sheet" & sheetNo).Range("A1").AutoFilter Field:=searchInColumn, Criteria1:=textToSearch
     DR = Worksheets("Summary").UsedRange.SpecialCells(xlCellTypeLastCell).Row
     If IsEmpty(DR) = True Or DR = 1 Then
      Worksheets("Sheet" & sheetNo).UsedRange.SpecialCells(xlCellTypeVisible).Copy _
        Destination:=Worksheets("Summary").Range("A1")
     Else
      Worksheets("Sheet" & sheetNo).UsedRange.Offset(1, 0).SpecialCells(xlCellTypeVisible).Copy _
        Destination:=Worksheets("Summary").Range("A" & DR + 1)
     End If
   End Sub

提到您遇到的错误。我遇到的错误是运行时错误'424'所需的对象,如果其他任何人对自动化人员有更多的想法,它似乎会在第一时间停止?Cheesok它将如何从新的“隐藏行”自动复制到摘要选项卡?我的解决方案是手动解决方案,而不是自动解决方案。谢谢。手动解决方案可能会奏效,但我希望摘要页面类似于没有的快速状态报告。在这种情况下,我更喜欢自动解决方案,而不是手动解决方案。