【问题标题】:Paste filtered results to another sheet将过滤后的结果粘贴到另一个工作表
【发布时间】: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。

标签: vba excel


【解决方案1】:

好的,既然我知道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

这两次都会发生。

注意:我知道您已经为此工作了很长时间,因此研究这些更改发生的原因确实对您很有帮助,而不是仅仅将它们复制到您的代码中并继续前进,所以您真正了解它在做什么,因此您可以在将来复制它,或根据需要对其进行操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-16
    • 2020-09-30
    • 2017-01-23
    • 1970-01-01
    • 2022-01-26
    • 2018-05-03
    • 1970-01-01
    • 2021-11-05
    相关资源
    最近更新 更多