首页 > 解决方案 > 应用自动筛选时复制特定范围

问题描述

在这里需要一些帮助。行 A 用于标题,并为字段 16 应用了“自动过滤器”,在这种情况下,当过滤它以查找“Q1”时。我将在其他季度重复此步骤。

我试图一次只复制一个特定的行和范围。例如:第一列 A...复制仅过滤的内容然后粘贴到我想要的位置...然后我会写一个新行以仅获取 D 列并将其粘贴到我想要的任何位置。

我目前正在使用 UsedRange,但不确定如何摆脱它。Range(A:A) 是否有效,Range("B:B") 那么如果它是连续的,我可以为列 F、G 和 G=H 执行 Range(F:H)。但是不断收到错误1004

希望我说得通

Dim a As Workbook
Dim b As Worksheet
Dim c As Worksheet
Dim d As Worksheet

Set a = ThisWorkbook
Set b = Worksheets("Opportunity(BE)")
Set c = Worksheets("Pipeline(BE)")
Set d = Worksheets("Renewal(BE)")

a.Worksheets("Probable").Range("A1:T1").AutoFilter Field:=17, 
Criteria1:="Open"

a.Worksheets("Probable").Range("A1:T1").AutoFilter Field:=16, Criteria1:="Q1"
a.Worksheets("Probable").Range("B:B").Offset(1).SpecialCells(xlCellTypeVisible).Copy
b.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues

标签: excelvba

解决方案


未经测试,但一种方法是使用Intersect捕获您想要的特定列。

Sub x()

Dim a As Workbook
Dim b As Worksheet
Dim c As Worksheet
Dim d As Worksheet
Dim r As Range

Set a = ThisWorkbook
Set b = Worksheets("Opportunity(BE)")
Set c = Worksheets("Pipeline(BE)")
Set d = Worksheets("Renewal(BE)")

With a.Worksheets("Probable")
    .Range("A1:T1").AutoFilter Field:=16, Criteria1:="Open"
    Set r = Intersect(.Range("B:B"), .AutoFilter.Range) 'column B of filtered data
    r.Offset(1).Resize(r.Rows.Count - 1).Copy 'remove header
    b.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
End With

End Sub

推荐阅读