我有一个工作簿,我需要在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
提前谢谢你。 瓦西利斯。
http://s38.photobucket.com/user/Greekcougar/media/screenshot9_zpslhtkkfue.jpg.html
答案 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不是必需的。一种简单的方法是使用公式和过滤器。 在工作表中添加一列,查看上一行并检查是否存在。然后过滤此列,然后您可以复制并粘贴到摘要标签。