Table of contents
该教程展示了如何在Excel中使用高级过滤器,并提供了一些非复杂的标准范围的例子,以创建一个大小写敏感的过滤器,寻找两列之间的匹配和差异,提取与一个较小列表相匹配的记录,等等。
在上一篇文章中,我们讨论了Excel高级过滤器的不同方面,以及如何使用它来用AND以及OR逻辑过滤行。 现在你知道了基本知识,让我们来看看更复杂的标准范围的例子,可能会证明对你的工作有帮助。
设置一个基于公式的标准范围
由于本教程中讨论的大多数标准范围的例子都将包括各种公式,让我们从定义基本规则开始,以正确地设置它们。 相信我,这一小段理论将为你节省大量时间,并免除为你复杂的标准范围(包括基于公式的多个条件)排除故障而带来的头痛。
- 你在标准范围内使用的公式必须评估为 为真 或 失败 .
- 标准范围应至少包含2个单元格。 公式单元格 和 标题的单元格。
- ǞǞǞ 标题单元 的公式化标准应该是空白或与任何表(列表范围)的标题不同。
- 对于要评估的公式为 每行 在列表范围内,使用相对引用(如A1)来引用最上面的单元格中的数据。
- 对于只对某一公式进行评估的 特定细胞 或 细胞的范围 ,使用绝对引用(如$A$1)来引用该单元格或区域。
- 当参考了 列表范围 公式中,总是使用绝对的单元格引用。
- 当提供多个条件时,在同一行中输入所有的条件,用一个 "A "连接它们。 和 操作符,并将每个标准放在一个单独的行上,以将它们与 或 经营者。
Excel高级过滤器标准范围示例
下面的例子将教你如何在Excel中创建自己的过滤器,以处理使用常规Excel自动过滤器无法完成的更复杂的任务。
对文本值进行区分大小写的过滤
和Excel自动过滤一样,高级过滤工具在本质上是不区分大小写的,这意味着它在过滤文本值时不区分大写和小写字符。 然而,你可以通过使用高级过滤条件中的EXACT功能轻松地进行区分大小写的搜索。
例如,要过滤含有以下内容的行 香蕉 ,无视 蕉叶 和 香蕉 ,在标准范围内输入以下公式。
=EXACT(B5, "Banana")
其中B是包含项目名称的列,第5行是第一条数据行。
然后,通过点击应用Excel高级过滤器。 高级 上的按钮。 数据 选项卡,并配置 列表范围 和 标准范围 请注意,在 "我的 "和 "我的 "之间,有一个 "我的"。 标准范围 包括2个细胞-- 标题单元 和 公式单元格 .
注意:上面的图片以及本教程中所有的截图都显示了标准范围单元格中的公式,这只是为了清晰起见。 在你真正的工作表中,公式单元格应该返回TRUE或FALSE,这取决于第一行的数据是否符合标准。
在一列中过滤高于或低于平均值的数值
当过滤数值时,你可能经常想只显示那些高于或低于列中平均值的单元格。 例如。
过滤带有小计的行 高于平均水平 ,在标准范围内使用以下公式。
=F5>AVERAGE($F$5:$F$50)
过滤带有小计的行 低于平均水平 ,使用以下公式。
=F5
请注意,我们使用相对引用来指代有数据的顶部单元格(F5),使用绝对引用来定义你想计算平均值的整个范围,不包括列标题($F$5:$F$50)。
下面的截图展示了上述平均公式的作用。
熟悉Excel数字过滤器的人可能会问,为什么有人要费力地使用高级过滤器,而内置的数字过滤器已经有了。 高于平均水平 和 低于平均水平 是的,但Excel内置的过滤器不能与OR逻辑一起使用!
因此,为了进一步了解这个例子,我们来过滤以下的行 小计 (F栏) 或 9月 销售 (为此,通过在单独的一行中输入每个条件,用OR逻辑设置标准范围。 结果,你将得到一个在E列或F列中有高于平均值的项目列表。
过滤有空白或无空白的行
众所周知,Excel过滤器有一个内置的过滤空白单元格的选项。 通过选择或不选择 (空白) 问题是,Excel内置的空白过滤器只能通过AND逻辑工作。
如果你想用OR逻辑过滤空白或非空白单元格,或将空白/非空白条件与其他一些条件一起使用,请用以下公式之一设置高级过滤条件范围。
过滤器 空白 :
顶层细胞 =""过滤器 非空白。
顶层细胞 ""用OR逻辑过滤空白单元格
要过滤在A列或B列或两列中都有空白单元格的行,可以这样配置高级过滤条件范围。
=A6=""
=B6=""
其中6是最上面的一行数据。
用OR和AND逻辑过滤非空白细胞
为了进一步了解Excel的高级过滤器是如何在多个条件下工作的,让我们用以下条件来过滤样本表中的行。
- 或者是 地区 (A栏)或 项目 (B栏)应是非空白的,并且
- 小计 (C列)应大于900。
换句话说,我们想显示符合以下条件的行。
( 小计 >900 和 地区 =非空白) 或 ( 小计 >900 和 项目 =非空白)
正如你已经知道的,在Excel高级过滤器的条件范围内,用AND逻辑连接的条件应该在同一行输入,而用OR逻辑连接的条件--在不同的行输入。
因为这个例子中的一个标准是用公式表达的(非空白),另一个包括一个比较运算符(Sub-total> 900),让我提醒你。
- 用比较运算符形成的标准,其标题应与表格标题完全相等,如 小计 上述截图中的标准。
- 基于公式的标准应该有一个空白的标题单元或一个不符合任何表格标题的标题,如 非空白 上述截图中的标准。
如何提取顶部/底部的N条记录
你可能知道,内置的Excel数字过滤器有一个选项,可以显示前10项或后10项。 但如果你需要过滤前3项或后5项的数值,怎么办? 在这种情况下,Excel高级过滤器的以下公式就派上了用场。
萃取物 顶部 N项。
顶层细胞 >=LARGE( 范围 , N)萃取物 底部 N项。
顶层细胞 <=SMALL( 范围 , N)例如,要过滤前3个小计,用这个公式创建标准范围。
=F5>=LARGE($F$5:$F$50,3)
要提取底部3个小计,请使用此公式。
=F5>=SMALL($F$5:$F$50,3)
其中F5是最顶层的单元格,里面有数据。 小计 列(不包括列的标题)。
下面的截图显示了前3个公式的运作情况。
注意:如果列表范围包含一些具有相同数值的行,并落在顶部/底部的N个列表中,所有这些行都会被显示出来,就像下面的截图中所示。
筛选出两列之间的匹配和差异
我们以前的一篇文章介绍了在Excel中比较两列的各种方法,并找到它们之间的匹配和差异。 除了上述教程中涉及的Excel公式、条件格式化规则和Duplicate Remover工具外,你还可以使用Excel的高级过滤器来提取两列或多列中具有相同或不同值的行。 要做到这一点,输入一个的标准范围内的下列简单公式。
- 过滤器用于 匹配 (重复的),分2列。
=B5=C5
=B5C5
其中B5和C5是在你想比较的两列中有数据的最上面的单元格。
注意:高级过滤工具只能搜索在以下方面的匹配和差异 同行 要找到所有在A列但不在B列的数值,请使用这个公式。
根据列表中的匹配项过滤行数
假设你有一个有数百或数千行的大表,而你收到了一个较短的列表,其中只包含在某一时刻相关的项目。 问题是--你如何在表中找到所有在或不在较小列表中的条目?
筛选符合列表中项目的行
要找到源表中也存在于较小列表中的所有项目,使用以下COUNTIF公式。
COUNTIF( 列表_匹配 , top_data_cell)假设较小的列表在D2:D7范围内,而表中要与该列表比较的项目在第10行开始的B列,公式如下(请注意使用绝对和相对引用)。
=countif($d$2:$d$7,b10)
当然,你并不局限于只用一个标准来过滤你的表格。
例如,要过滤与列表匹配的行,但对于 北部地区 只有在同一行中输入两个标准,这样它们才能与AND逻辑一起工作。
- 地区。
="=北方"
- 匹配的项目。
=countif($d$2:$d$7,b10)
正如你在下面的截图中看到的,表中只有两条记录符合这两个标准。
注意:在这个例子中,我们使用 完全匹配 文本值的标准。 ="=北方 "
只查找那些与指定文本完全相等的单元格。 如果你将区域标准简单地输入为 北方 (不含等号和双引号),Microsoft Excel将找到所有以指定文本开头的项目,例如:1. 东北地区 或 西北地区 更多信息,请参见Excel文本值的高级过滤器。
过滤与列表中的项目不匹配的行
要找到表中所有不在较小列表中的项目,检查我们的COUNTIF公式的结果是否等于零。
COUNTIF( 列表_匹配 , top_data_cell) =0例如,要过滤 北部地区 表中的项目确实出现在列表中,使用以下标准。
- 地区。
="=北方"
- 不匹配的项目。
=countif($d$2:$d$7,b10)=0
注意事项。
- 如果要匹配的列表在不同的工作表中,一定要在公式中包括工作表的名称,例如
=COUNTIF(Sheet2! $A$2:$A$7,B10)
. - 如果你想将结果提取到不同的工作表中,请从目标工作表中启动高级过滤器,如如何将过滤的行提取到另一个工作表中所解释的那样。
周末和工作日的过滤器
到目前为止,我们的高级过滤器标准范围的例子主要涉及数字和文本值。 现在,是时候给那些操作日期的人一些线索了。
内置的Excel日期过滤器提供了广泛的选项,涵盖了许多情况。 许多,但不是全部!例如,如果给你一个日期列表,要求你过滤工作日和周末,你会怎么做?
正如你可能知道的那样,Microsoft Excel提供了一个特殊的WEEKDAY函数,可以返回与给定日期相对应的星期。 而我们要在Excel高级过滤器标准范围内使用的正是这个函数。
如何在Excel中过滤周末
记住,在WEEKDAY术语中,1代表星期天,6代表星期六,过滤周末的公式如下。
或(WEEKDAY( 日期 )=7, WEEKDAY( 日期 )=1)在这个例子中,我们要过滤从第5行开始的B列中的日期,所以我们的周末公式有如下形式。
=or(weekday(b5)=7, weekday(b5)=1)
如何在Excel中过滤工作日
要过滤工作日,请修改上面的公式,使其不包括1(星期日)和7(星期六)。
和(WEEKDAY( 日期 )7, WEEKDAY( 日期 )1)对于我们的样表,下面的公式会很有效。
=and(weekday(b5)7, weekday(b5)1)
此外,你还可以添加一个条件来过滤掉空白单元格。 =B5""
要以其他方式过滤工作表中的日期,只需找到相关的日期功能,并毫不犹豫地在你的高级过滤标准范围内使用它。
好了,这就是你如何在Excel中使用复杂条件的高级过滤器。 当然,你的选择并不局限于本教程中讨论的例子,我们的目标只是给你一些启发,让你走上正确的轨道。 记住,掌握的道路是由实践铺成的,你可能想用下面的链接下载我们的例子,并扩展或反向谢谢你的阅读,希望下周在我们的博客上见到你!"。
实践工作手册
Excel高级过滤器实例(.xlsx文件)