高级过滤器,从Excel表中排除三个条件

高级过滤器,从Excel表中排除三个条件,excel,filter,excel-formula,Excel,Filter,Excel Formula,我正在尝试使用高级过滤器过滤一个表,其中所有项目都可以显示,但项目编号包含(或以“PDE”、“Q”或“m”开头)的项目除外。常规Excel筛选器只允许两个筛选条件,这就是我需要高级筛选器的原因。(为了澄清,表中有许多列,而Article Number就是其中一列。) 然而,尽管我做了大量的研究,包括Microsoft教程,但到目前为止,我还无法找到一种方法来过滤不包含内容的项目。有什么想法吗?如果您需要更多信息,请告诉我。我的第一直觉是,这不是直接可能的。我会在一个辅助列中编写一个类似于=if(

我正在尝试使用高级过滤器过滤一个表,其中所有项目都可以显示,但项目编号包含(或以“PDE”、“Q”或“m”开头)的项目除外。常规Excel筛选器只允许两个筛选条件,这就是我需要高级筛选器的原因。(为了澄清,表中有许多列,而Article Number就是其中一列。)


然而,尽管我做了大量的研究,包括Microsoft教程,但到目前为止,我还无法找到一种方法来过滤不包含内容的项目。有什么想法吗?如果您需要更多信息,请告诉我。

我的第一直觉是,这不是直接可能的。我会在一个辅助列中编写一个类似于
=if(,“Y”,“N”)
的公式,然后对该列进行筛选。

您可以使用AutoFilter完成此操作,您必须构建一个数组,该数组包含列中的所有元素,不包括重复项,也不包括PDE Q和M

下面是列D的示例,其中标题行是行#2

Sub FilterExcludeThree()
    Dim N As Long, i As Long, c As Collection
    Set c = New Collection
    N = Cells(Rows.Count, "D").End(xlUp).Row
    On Error Resume Next
    For i = 3 To N
        v = Cells(i, "D").Value
        If v = "PDE" Or v = "M" Or v = "Q" Or v = "" Then
        Else
            c.Add v, CStr(v)
        End If
    Next
    On Error GoTo 0

    ReDim ary(0 To c.Count - 1)

    For i = 1 To c.Count
        ary(i - 1) = c.Item(i)
    Next i

    ActiveSheet.Range("D2:D" & N).AutoFilter Field:=1, Criteria1:=ary, _
        Operator:=xlFilterValues
End Sub

我认为问题可能在于只有一列(尽管我在您引用的文档中没有看到这方面的引用)。如果您的列表在a列中,例如A7:A17,请尝试插入一个新的列,其中A2(A1为空):

然后是高级过滤器,列表范围:
$A$6:$B$17
,标准范围:
$A$1:$A$2

=AND(ISERROR(SEARCH("M",B7)),ISERROR(SEARCH("Q",B7)),ISERROR(SEARCH("PDE",B7)))