【发布时间】:2015-10-14 16:25:05
【问题描述】:
我正在构建一个包含三个过程工作表(FTP、ATP、CS)和一个故障报告工作表的模板。我正在尝试对每个程序表应用高级过滤器,仅复制过滤后的结果,然后将它们连续粘贴到故障报告的指定范围内。
我的高级过滤器工作正常,但是当我尝试将结果复制到故障报告中时它会导致问题。 FTP 结果将正确粘贴,但 ATP 和 CS 将粘贴到命名范围的底部(并扩展范围)。我需要告诉它粘贴到 A 列(在命名范围内)的下一个空单元格中。我已附上返回结果的副本。
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
【问题讨论】:
-
第 21 行是否总是标题行?还是使用 FTP 结果命令粘贴?也许更好的问题是
Fail_Report_Table是否总是从第 21 行开始?如果是另一行,那是什么? -
是的,第 21 行将始终是标题。数据从单元格 A22 开始。 Fail_Report_Table 跨越 A22:I47,标题来自 A21:I21。