自动过滤器根据2个标准复制并粘贴到不同的工作表

时间:2017-06-26 21:15:38

标签: excel vba excel-vba

我不确定如何使用Autofilter,但我正在创建一个新的工作表,我试图根据两个标准过滤另一个工作表。然后,我需要将该工作表中仅有2列的值复制到新工作表中。这是我到目前为止的代码:

Private Sub Workbook_Open()

Dim ws As Worksheet
Set sheet = Sheets.Add(After:=Sheets(Worksheets.Count))

ActiveSheet.Range("A11").Value = "Projects in Loss:"

ActiveWorkbook.Sheets("Fielding").Activate

ActiveSheet.ShowAllData

ActiveWorkbook.Sheets("Fielding").Activate

ActiveSheet.ShowAllData

Selection.AutoFilter field:=15,   
Criteria:=ActiveWorkbook.Sheets(Target).Range("A3").Value, Operator:=xlAnd

Selection.AutoFilter field:=21, Criteria:="<30%" & ">0"

ActiveSheet.Columns("A").Select
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy

ActiveWorkbook.Sheets(ws).Activate
ActiveSheet.Range("A12").PasteSpecial xlPasteValues
Application.CutCopyMode = False

ActiveWorkbook.sheet ("Fielding")
ActiveSheet.Columns("U").Select
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy

ActiveWorkbook.Sheets(ws).Activate
ActiveSheet.Range("B12").PasteSpecial xlPasteValues
Application.CutCopyMode = False

End Sub

它一直给我一个运行时错误&#39; 1004&#39;。有谁知道我做错了什么或者能指引我走向正确的方向?

1 个答案:

答案 0 :(得分:0)

Selection.AutoFilter field:=21, Criteria:="<30%" & ">0"

执行此操作的方法是使用xlAnd运算符

设置两个不同的条件
Selection.AutoFilter field:=21, Criteria1:=">0", Operator=xlAnd, Criteria2 = "<0.3"

此外,Criteria方法中没有参数AutoFilter。它是Criteria1,也可以是另一个参数Criteria2(在您的代码中的其他位置将Criteria更改为Criteria1

使用Selection是危险的,也是错误的来源。您应该尝试在没有Selection内容的情况下重写代码。看看How to avoid using Select in Excel VBA macros