2015-10-14 71 views
0

我正在构建一个包含三个过程工作表(FTP,ATP,CS)和一个故障报告工作表的模板。我试图做的是将高级过滤器应用于这些过程表中的每一个,仅复制过滤的结果,并将它们连续粘贴到故障报告的命名范围中。将过滤结果粘贴到另一张纸

我有先进的过滤器可以正常工作,但是当我试图将结果复制到故障报告中时,会引起问题。 FTP结果将正确粘贴,但ATP和CS将粘贴到指定范围的底部(并扩大范围)。我需要告诉它粘贴到列A中的下一个空单元格(在命名范围内)。我附上了返回结果的副本。 Failure Report Results

Sub AdvancedFilterCopyAttempt() 
' Script to apply an advanced filter to multiple worksheets and copy those results to copy to the Failure Report. 

'Declare Variables 
Dim rngCopy As Range, rngCopyNotes As Range 
Dim NextRow As Long 
Dim wsFTP As Worksheet, wsATP As Worksheet, wsFail As Worksheet, wsCS As Worksheet 

Set wsFTP = Sheets("Results") 
Set wsATP = Sheets("ATP Results") 
Set wsFail = Sheets("Failure Report") 
Set wsCS = Sheets("CS Results") 

Sheets("Results").Activate 
Range("Results").AdvancedFilter Action:=xlFilterInPlace, _ 
CriteriaRange:=Range("Criteria"), Unique:=False 

Sheets("ATP Results").Activate 
Range("A:I").AdvancedFilter Action:=xlFilterInPlace, _ 
CriteriaRange:=Range("APTCriteria"), Unique:=True 

Sheets("CS Results").Activate 
Range("A:I").AdvancedFilter Action:=xlFilterInPlace, _ 
CriteriaRange:=Range("CSCriteria"), Unique:=True 


wsFTP.Activate 
'copy FTP results to Failure Report 
Set rngCopy = wsFTP.Range("Results_Part1").SpecialCells(xlCellTypeVisible) 
Set rngCopyNotes =  wsFTP.Range("Results_Part2").SpecialCells(xlCellTypeVisible) 

Sheets("Failure Report").Range("A:A").ClearContents 
NextRow = wsFail.Range("Fail_Report_Table").Cells(1, 1).Row 
rngCopy.Copy wsFail.Range("A" & NextRow) 
rngCopyNotes.Copy wsFail.Range("H" & NextRow) 


wsATP.Activate 
'copy ATP results to Failure Report 
Set rngCopy = wsATP.Range("APTResults1").SpecialCells(xlCellTypeVisible) 
Set rngCopyNotes = wsATP.Range("APTResults2").SpecialCells(xlCellTypeVisible) 

NextRow = wsFail.Range("Fail_Report_Table").Cells(1, 1).End(xlDown).Offset(1).Row 
rngCopy.Copy wsFail.Range("A" & NextRow) 
rngCopyNotes.Copy wsFail.Range("H" & NextRow) 

wsCS.Activate 
Set rngCopy = wsCS.Range("CSResults1").SpecialCells(xlCellTypeVisible) 
Set rngCopyNotes = wsCS.Range("CSResults2").SpecialCells(xlCellTypeVisible) 

NextRow = wsFail.Range("Fail_Report_Table").Cells(1, 1).End(xlDown).Offset(1).Row 
rngCopy.Copy wsFail.Range("A" & NextRow) 
rngCopyNotes.Copy wsFail.Range("H" & NextRow) 

Sheets("Failure Report").Activate 
End Sub 
+0

是第21行总是一个标题行?或者它是否与FTP结果命令一起被粘贴?也许更好的问题是'Fail_Report_Table'总是从第21行开始?如果它的另一排,它是什么? –

+0

是的,第21行将始终是标题。数据从单元格A22开始。 Fail_Report_Table从A22:I47跨越A21:I21的标题。 –

回答

0

好了,现在我明白Fail_Report_Table开始在A22,行

NextRow = wsFail.Range("Fail_Report_Table").Cells(1, 1).End(xlDown).Offset(1).Row 

改变

NextRow = wsFail.Range("Fail_Report_Table").Cells(1, 1).Offset(-1).End(xlDown).Offset(1).Row 

对于它发生两次。

注意:我知道你已经在这方面做了很多工作,所以它会真正帮助你研究为什么会发生这些变化,而不是将它们复制到代码中并继续前进,所以你真的了解它在做什么,以便将来可以复制它,或根据需要操作它。