使用高级条件筛选

应用对象
Microsoft 365 Mac 版专属 Excel Excel 2024 Excel 2021 Excel 2019 Excel 2016

如果要筛选的数据需要跨多个字段的条件,例如按多个条件进行筛选,这些条件必须全部为 true,或者显示与多个不同条件 ((如 Type = “Produce” 或 Salesperson = “Davolio”) )匹配的行,则可以使用“ 高级筛选器 ”对话框。

若要打开“ 高级筛选器 ”对话框,请单击“ 数据>高级”。

“数据”选项卡的“排序和筛选”部分的屏幕截图

高级筛选器 示例
高级筛选条件概述
一列中有多个条件,任何条件为真 销售人员 = "赵强" OR 销售人员 = "林恪"
多列中有多个条件,所有条件都为真 Type = “Produce” AND Sales > 1000
多列中有多个条件,任何条件为真 类型="农产品" OR 销售人员="林恪"
多组条件,所有组集中于一列中 (Sales > 6000 和 Sales < 6500 ) 或 (Sales < 500)
多组条件,每组包含多列 (Salesperson = “Davolio” AND Sales >3000) OR
(Salesperson = “Buchanan” and Sales > 1500)
通配符条件 销售人员 = 姓名中的第二个字为“恪”

高级筛选条件概述

高级筛选器 的工作方式与 筛选器 在几个重要方面不同。

  • 它显示了“高级筛选”对话框,而不是“自动筛选”菜单。
  • 创建一个条件范围 (数据上方的单独单元格) 在其中输入筛选条件,然后告诉“高级筛选器”对话框使用该区域。
  • 更改条件值时,高级筛选器不会自动更新

注意

高级筛选器仍可用于复杂的筛选方案,但 Excel 中的 Copilot 等新功能现在可以帮助用户通过自然语言查询进行数据分析和筛选,作为某些用例的替代方法。

了解 AND 与 OR 逻辑

逻辑类型 如何设置 示例 它找到的内容
AND 逻辑 (所有条件都必须为 true) 将条件放在同一行中 第 1 列中的类型 = “生成”
第 2 列中的 Sales > 1000
(两者在同一行)
仅类型为“生成”且销售额大于 1000 的行
或 逻辑 (任何条件都可以为 true) 将条件放在不同的行中 第 1 行:类型 = “生成”
第 2 行:类型 = “Meat”
(不同的行,相同的列)
类型为“生成”或类型为“肉类”的行 (或两者兼有)

示例数据

以下示例数据用于本文中的所有过程。

数据包括列表范围上方的三个空白行,这些行将用作 a criteria range (A1:C4) 和 a list range (A6:C10) 。 条件区域含有列标签,条件值和列表区域之间至少有一个空白行。

若要使用这些数据,请在下表中选择、复制,然后粘贴至新 Excel 工作表的单元格 A1 中。

Type 销售人员 销售额
Type 销售人员 销售额
饮料 蔡耀明 ¥51,220
肉类 刘英玫 ¥4,500
农产品 郑建杰 ¥63,280
农产品 彭德威 ¥65,440

在此示例中,生成的工作表将如下所示,其中筛选条件范围以蓝色边框,并且要筛选的数据 (列表范围) 以红色轮廓。 

条件和列表范围的屏幕截图

比较运算符

可以使用下列运算符比较两个值。 当使用这些运算符比较两个值时,结果为逻辑值  TRUE 或 FALSE。

比较运算符 含义 示例
=(等号) 等于 A1=B1
> (大于签名) 大于 A1>B1
< (小于签名) 小于 A1<B1
>= (大于或等于签名) 大于等于 A1>=B1
<= (小于或等于签名) 小于等于 A1<=B1
<> (不等于签名) 不等于 A1<>B1

使用等号键入文本或值

由于在单元格中键入文本或值时,使用等号 (=) 来指示公式,因此 Excel 会评估您键入的内容;但是,这可能会导致意外的筛选结果。 为了表示文本或值的相等比较运算符,应在条件区域的相应单元格中键入作为字符串表达式的条件:

=''=条目''

其中 ,条目 是要查找的文本或值。 例如:

在单元格中键入的内容 Excel 计算和显示的内容
="=彭德威" =彭德威
="=3000" =3000

考虑大小写区别

Excel 在筛选文本数据时不区分大小写。 但是,你可以使用公式来执行区分大小写的搜索。 有关示例,请参阅通配符条件部分。

使用预定义的名称

可以将某个区域命名为“条件”,此时“条件区域”框中就会自动出现对该区域的引用。 也可以将要筛选的列表区域命名为“数据库”,并将要粘贴行的区域命名为“提取”,这样,这些区域就会相应地自动出现在“列表区域”和“复制到”框中。

使用公式创建条件

可以将公式的计算结果作为条件使用。 记住下列要点:

  • 公式必须计算为 TRUE 或 FALSE。
  • 因为您正在使用公式,请像您平常那样输入公式,而不要以下列方式键入表达式:
    ='''=entry''
  • 不要将列标签用作条件标签;请将条件标签保留为空,或者使用列表区域中并非列标签的标签(在下面的示例中,是“计算的平均值”和“精确匹配”)。
    如果在公式中使用列标签而不是相对单元格引用或区域名称,Excel 将显示错误值,例如 #NAME?或 #VALUE! #VALUE!。 可忽略此错误,因为它不会影响列表区域的筛选方式。
  • 用于创建条件的公式必须使用相对引用来引用第一行数据中的对应单元格。
  • 公式中的所有其他引用必须是绝对引用。

一列中有多个条件,任何条件为真

布尔逻辑: (销售人员 = "赵强" OR 销售人员 = "林恪")

如果要筛选单个列与多个值 ANY 匹配的行,请使用此选项。 将显示具有 Davolio 的行和具有 Buchanan 的行。

  1. 要查找满足“一列中有多个条件”的行,请直接在条件区域的单独行中依次键入条件。 对于示例,请在条件范围的前两行中输入以下内容:

    Type 销售人员 销售额
    ="=彭德威"
    ="=林恪"
  2. 在列表区域中单击一个单元格。

  3. “数据”选项卡上的“排序和筛选”组中,单击“高级”

  4. 选择 筛选列表、就地、隐藏不符合条件的行,或 复制到其他位置, 将符合条件的行复制到工作表的其他区域。

  5. 在“条件区域”框中,输入条件区域(包括条件标签)的引用。 如果使用本示例,请输入 $A$1:$C$3。

  6. 如果使用本示例,列表区域的筛选结果是:

    Type 销售人员 销售额
    肉类 刘英玫 ¥4,500
    农产品 黄雅玲 ¥63,280
    农产品 刘英玫 ¥65,440

多列中有多个条件,所有条件都为真

布尔逻辑: (类型 = “Produce” and Sales > 1000)

  1. 若要查找满足多列中有多个条件的行,请在条件区域的同一行中键入所有条件。 对于示例,请输入:

    Type 销售人员 销售额
    ="=农产品" >1000
  2. 在列表区域中单击一个单元格。

  3. “数据”选项卡上的“排序和筛选”组中,单击“高级”

  4. 选择 筛选列表、就地、隐藏不符合条件的行,或 复制到其他位置, 将符合条件的行复制到工作表的其他区域。

  5. 在“条件区域”框中,输入条件区域(包括条件标签)的引用。 如果使用本示例,请输入 $A$1:$C$2。

  6. 如果使用本示例,列表区域的筛选结果是:

    Type 销售人员 销售额
    农产品 黄雅玲 ¥63,280
    农产品 刘英玫 ¥65,440

多列中有多个条件,任何条件为真

布尔逻辑: (Type = “Produce” OR Salesperson = “Buchanan”)

  1. 若要查找满足多列中有多个条件,其中任何条件都可以为真的行,请在条件区域的不同列和行中键入条件。 对于示例,请输入:

    Type 销售人员 销售额
    ="=农产品"
    ="=林恪"
  2. 在列表区域中单击一个单元格。

  3. 在“ 数据 ”选项卡上的“ 排序 & 筛选器 ”组中,单击“ 高级”。

  4. 选择 筛选列表、就地、隐藏不符合条件的行,或 复制到其他位置, 将符合条件的行复制到工作表的其他区域。

  5. 在“条件区域”框中,输入条件区域(包括条件标签)的引用。 如果使用本示例,请输入 $A$1:$B$3。

  6. 如果使用本示例,列表区域的筛选结果是:

    Type 销售人员 销售额
    农产品 黄雅玲 ¥63,280
    农产品 刘英玫 ¥65,440

多组条件,所有组集中于一列中

布尔逻辑: ( (Sales > 6000 和 Sales < 6500 ) 或 (Sales < 500) )

  1. 若要查找满足多组条件,每组包含用于一列的条件的行,请在多个列中包括同一个列标题。 对于示例,请输入:

    Type 销售人员 销售额 销售额
    >6000 <6500
    <500
  2. 在列表区域中单击一个单元格。 如果使用本示例,请单击列表区域 A6:C10 中的任意单元格。

  3. “数据”选项卡上的“排序和筛选”组中,单击“高级”

  4. 选择 筛选列表、就地、隐藏不符合条件的行,或 复制到其他位置, 将符合条件的行复制到工作表的其他区域。

    • 提示

      将筛选所得的行复制到其他位置时,可以指定复制操作中要包含的列。 筛选之前,请将所需列的列标签复制到计划粘贴筛选行的区域的首行。 而当筛选时,请在“复制到”框中输入对被复制列标签的引用。 这样,复制的行中将只包含已复制过标签的列。

  5. 在“条件区域”框中,输入条件区域(包括条件标签)的引用。 如果使用本示例,请输入 $A$1:$D$3。

  6. 如果使用本示例,列表区域的筛选结果是:

    Type 销售人员 销售额
    肉类 刘英玫 ¥4,500
    农产品 黄雅玲 ¥63,280

多组条件,每组包含多列

布尔逻辑: ( (Salesperson = “Davolio” AND Sales >3000) OR (Salesperson = “Buchanan” AND Sales > 1500) )

  1. 若要查找满足多组条件,其中每组包括用于多列的条件的行,请在单独的列和行中键入每组条件。 对于示例,请输入:

    Type 销售人员 销售额
    ="=彭德威" >3000
    ="=林恪" >1500
  2. 在列表区域中单击一个单元格。 如果使用本示例,请单击列表区域 A6:C10 中的任意单元格。

  3. “数据”选项卡上的“排序和筛选”组中,单击“高级”

  4. 选择 筛选列表、就地、隐藏不符合条件的行,或 复制到其他位置, 将符合条件的行复制到工作表的其他区域。

  5. 在“条件区域”框中,输入条件区域(包括条件标签)的引用。 如果使用本示例,请输入 $A$1:$C$3。

  6. 如果使用本示例,列表区域的筛选结果将为:

    Type 销售人员 销售额
    农产品 黄雅玲 ¥63,280
    农产品 刘英玫 ¥65,440

通配符条件

布尔逻辑: 销售人员 = 姓名中的第二个字为“恪”

  1. 要查找共享某些字符而非其他字符的文本值,请执行下面一项或多项操作:

    • 键入一个或多个没有等号的字符 (=) ,以查找以这些字符开头的列中具有文本值的行。 例如,如果键入文本“”作为条件,则 Excel 将找到“赵强”、“赵威”和“赵新”。

    • 使用通配符。

      用途 若要查找
      ? (问号) 任何单字符
      例如,sm?th 可找到“smith”和“smyth”
      *(星号) 任意字符数
      例如,*east 可找到“Northeast”和“Southeast”
      ~(波形符)后跟 ?、* 或 ~ 问号、星号或波形符
      例如,fy91~? 可找到“fy91?”
  2. 在可以用作条件区域的列表区域上方插入至少三个空白行。 条件区域必须具有列标签。 确保条件值和列表区域之间至少有一个空白行。

  3. 在列标签下方的行中,键入要匹配的条件。 如果使用此示例,请输入:

    Type 销售人员 销售额
    ="=Me*"
    ="=?恪*"
  4. 在列表区域中单击一个单元格。 如果使用本示例,请单击列表区域 A6:C10 中的任意单元格。

  5. “数据”选项卡上的“排序和筛选”组中,单击“高级”

  6. 选择 筛选列表、就地、隐藏不符合条件的行,或 复制到其他位置, 将符合条件的行复制到工作表的其他区域。

  7. 在“条件区域”框中,输入条件区域(包括条件标签)的引用。 如果使用本示例,请输入 $A$1:$B$3。

  8. 如果使用本示例,列表区域的筛选结果是:

    Type 销售人员 销售额
    饮料 蔡耀明 ¥51,220
    肉类 刘英玫 ¥4,500
    农产品 黄雅玲 ¥63,280

如何删除或清除高级筛选器

应用高级筛选器后,可能需要将其删除以再次查看所有数据。 方法如下:

  1. 单击筛选数据范围中的任何单元格。
  2. 转到“数据”选项卡。
  3. 在“排序 & 筛选器”组中,单击“ 清除”。
  4. 将再次显示所有行。

需要更多帮助吗?

你随时可以在 Excel 技术社区 中咨询专家或在 社区中获取支持。