来自另一个工作簿的AdvancedFilter Criteriarange

时间:2016-06-16 14:48:08

标签: excel vba excel-vba autofilter advanced-filter

我正在尝试过滤A列(“名称”)中的名称列表,条件是E列(“主要类别”)不是“IT”。我可以完成名称过滤或<> IT过滤,但我不知道如何将两个语句放在一起。理想情况下,我希望代码在动态列表中的另一个已关闭的工作簿中查找条件信息。这是我到目前为止所拥有的。

   Sub Macro1()
    '
        Range("A1:A196").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
            Sheets("Sheet1").Range("A1:A59"), Unique:=False

    End Sub

    Sub Macro3()
    '
        Range("E1:E196").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
            Sheets("Sheet1").Range("E1:E2"), Unique:=False

    End Sub

非常感谢这方面的任何帮助!

2 个答案:

答案 0 :(得分:1)

要根据您在同一工作表中的要求过滤数据,请尝试此操作。 进一步请参阅@Rory评论标准范围不能在已关闭的工作簿中。

Sub Sort_Filter()
    With ActiveWorkbook.Worksheets("Sheet1").Range("$A$1:$E$196")
        .AutoFilter Field:=5, Criteria1:="<>*IT*", _
        Operator:=xlAnd
    End With
    With ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

Bwfore program run After program run

答案 1 :(得分:1)

您可以打开已关闭的工作簿以使用它,然后在完成后关闭它。

Dim w As Workbook
Dim n As Workbook
Set w = ActiveWorkbook

Workbooks.Open "workbook_with_criteria.xlsx"
Set n = ActiveWorkbook

w.Activate
...
n.Close