Vba 另一工作簿中的AdvancedFilter标准范围

Vba 另一工作簿中的AdvancedFilter标准范围,vba,excel,autofilter,advanced-filter,Vba,Excel,Autofilter,Advanced Filter,我试图筛选a列(“名称”)中的名称列表,条件是E列(“主要类别”)不是“IT”。我可以完成名称过滤或IT过滤,但我不知道如何将这两条语句放在一起。理想情况下,我希望让代码在动态列表中的另一个封闭工作簿中查找标准信息。以下是我到目前为止的情况 Sub Macro1() ' Range("A1:A196").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ Sheets("Shee

我试图筛选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

在这方面的任何帮助都将不胜感激

要根据您在同一工作表中的要求筛选数据,请尝试此操作。 此外,请参阅@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
子排序过滤器()
使用ActiveWorkbook.Worksheets(“Sheet1”).Range($A$1:$E$196)
.自动筛选字段:=5,标准1:=“*IT*”_
运算符:=xlAnd
以
使用ActiveWorkbook.Worksheets(“Sheet1”).AutoFilter.Sort
.Header=xlYes
.MatchCase=False
.方向=xlTopToBottom
.SortMethod=xl拼音
.申请
以
端接头

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

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

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

w.Activate
...
n.Close

条件范围不能在已关闭的工作簿中。此外,由于A筛选器有多行,您需要在每行上重复E筛选器,或者使用公式条件。我尝试使用以下方法提取A列和E列的条件,但这无法同时获取这两个条件。过滤。范围(“A1:A196”)。高级筛选操作:=XLFilterPlace,CriteriaRange:=uuu表(“Sheet1”)。范围(“A1:E59”),唯一:=False筛选范围需要为
A1:E196
谢谢。我试过了。不行。这两个sub在各自的范围内工作正常,但当范围从A列扩展到E列时,它只会过滤名称并保留“it”,这肯定是我缺少的其他内容。您是否在条件范围内所有列的第一行中都有正确的标题,并且您是否在该范围的每一行中都放置了it条件?