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

时间:2016-02-21 11:17:22

标签: excel vba excel-vba

我有一个工作簿,我需要在ROW G(第7行)上找到NO值,然后复制NO属于名为summary的新工作表(TAB)的行,在我的例子中它被列为表18。

我需要搜索所有工作表,但是从工作表1到工作表17在他们的G行中搜索NO。

我有一个我在网上找到的代码并修改它以符合我的标准。但它似乎并没有像我希望的那样继续发生错误。

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

提前谢谢你。 瓦西利斯。

Chapter 14.21

http://s38.photobucket.com/user/Greekcougar/media/screenshot9_zpslhtkkfue.jpg.html

2 个答案:

答案 0 :(得分:1)

以下是相同的代码。它有两个子程序启动和applyFilterAndCopy。在启动时,您可以指定否。工作表( sheetCount 在下面我提到的代码中为2)你需要扫描。在第一个内部调用第二个子过程(启动)时,您需要将列号和要搜索的文本指定为第二个子过程的变量(调用applyFilterAndCopy(i,1, "否")这里我提到了1即第1列和要在引号中搜索为否的字符串)。请注意,工作表名称必须采用Sheet ****格式,摘要表名称为摘要区分大小写,如说明中所述。

    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

答案 1 :(得分:0)

Vba不是必需的。一种简单的方法是使用公式和过滤器。 在工作表中添加一列,查看上一行并检查是否存在。然后过滤此列,然后您可以复制并粘贴到摘要标签。