位置:首页 > 综合教程 > Excel日期筛选条件设置与公式用法详解

Excel日期筛选条件设置与公式用法详解

时间:2026-07-11  |  作者:318050  |  阅读:0

用Excel按日期筛选数据,最不容易出错的思路其实很简单:

  • 先确认日期列都是合规的日期值
  • 再把筛选条件单独放在单元格里
  • 最后调用 FILTER 函数引用这些条件

这次操作演示用的是Microsoft 365版本的Excel。FILTER 属于动态数组函数。如果你用的是WPS或者更早版本的Excel,先确认下软件支不支持这个函数再动手。

写这类公式不用追求多复杂。核心就是让Excel把待筛选的日期列、你填的条件日期都识别成可对比的日期数值。接下来我们拿一份带人员、日期、数量的样例数据表一步步讲。

第一步:确认日期列可以参与比较

先核对你数据里的日期列——所有日期都要放在同一列。单元格显示成 2024/01/02 这种标准日期格式,不能是前面带英文引号、前后藏了多余空格的文本内容。

样例里的B列就是后续公式要判断的日期列,公式会逐行校验这一列的内容是否符合筛选要求。

如果你的日期是别处复制粘贴过来的,先选中整列日期,去顶部「开始」选项卡的数字格式区看下,确认格式选的是日期。

要是筛选出来结果是空的,也可以临时套个 =ISNUMBER(B3) 检查单元格,返回 TRUE 才说明这个单元格里的内容是可直接参与大小对比的合法日期。

第二步:把筛选条件放进单元格

别把筛选条件直接硬写死在公式里——把起止日期、要筛的月份、星期这类条件都单独放到空白单元格里。之后要改筛选规则,直接改对应单元格的内容就行,不用每次都翻出来改公式。

图里右侧标绿的单元格就是预留的条件区,公式会直接读取这里填的数值。

Excel日期筛选条件设置与公式用法详解_wishdown.com

要筛某个时间段的话,E2 填起始日期,F2 填结束日期就行。比如分别填 2024/02/012024/02/28

要是想按月份筛,直接在条件单元格里填对应的月份数字,公式后续会调用 MONTH 函数从日期列里提取月份做匹配。

第三步:用 FILTER 写日期判断

日期区间最常用的写法,就是让日期列同时满足「大于等于开始日期」和「小于等于结束日期」两个要求。

假设原始数据在 A3:C24,日期列在 B3:B24,开始日期在 E2,结束日期在 F2,公式可以直接这么写:

=FILTER(A3:C24,(B3:B24>=E2)*(B3:B24<=F2),"没有符合条件的数据")

图里的样例公式用 MONTHWEEKDAY 做了两个筛选条件,逻辑是完全一样的:括号里的每一项判断都会生成一组TRUE/FALSE结果,两个条件中间用乘号连接,代表必须两项同时满足才会保留对应行的数据。

Excel日期筛选条件设置与公式用法详解_wishdown.com

这里的乘号你可以直接理解成「并且」的逻辑。

  • 要做「开始日期到结束日期之间」的筛选,就写两个大小对比条件。
  • 要做「2月并且是星期一」的筛选,就写 (MONTH(B3:B24)=G2)*(WEEKDAY(B3:B24,2)=G3)
  • 要加更多条件也没问题,只要每组判断的行数和原始数据的行数一致,直接往后相乘就行。

第四步:按月份、星期或组合条件扩展

日期筛选不一定只按起止日期来。下面样例的两个结果区,分别演示了按月份筛选、按星期筛选的写法。

  • 按月份筛:=FILTER(A3:C24,MONTH(B3:B24)=G2,"没有符合条件的数据")
  • 按星期筛:=FILTER(A3:C24,WEEKDAY(B3:B24,2)=G3,"没有符合条件的数据")
Excel日期筛选条件设置与公式用法详解_wishdown.com

WEEKDAY(B3:B24,2) 里的第二个参数填 2,代表星期一返回1,星期二返回2,一直到星期日返回7。按这个规则设置的话,条件单元格填 1 就会筛出所有周一的数据,填 6 就会筛出所有周六的数据。

FILTER 函数语法拆解

FILTER 的完整语法是:

=FILTER(array, include, [if_empty])

各参数说明:

  • array:要返回的所有数据区域。在日期筛选里写法:A3:C24,通常包含日期列旁边的人员、数量等关联字段。
  • include:筛选条件,输出结果的行数必须和原始数据区域的行数对应。写法:(B3:B24>=E2)*(B3:B24<=F2)
  • [if_empty]:没有匹配记录时显示的内容,可省略。写法:"没有符合条件的数据"

常见的日期筛选逻辑分三类:

  • 按区间筛:用大小比较符号。
  • 按月份筛:用 MONTH 函数。
  • 按星期筛:用 WEEKDAY 函数。

要是你条件单元格里填的是文本格式的日期,建议转成标准日期值,或者直接用 DATE(2024,2,1) 这类写法生成合法日期值。

容易出错的地方

筛选结果为空的时候,先检查日期列是不是文本格式。很多表格看起来显示的是日期,实际存的是纯文本,做对比的时候自然会失效。这种情况可以用 DATEVALUE 函数转换,也可以选中日期列,去顶部「数据」选项卡里用分列功能,把文本格式的日期批量转成真正的日期值。

出现 #CALC! 报错的时候,大概率是没有匹配到结果,而且公式没写第三个参数。把公式补全成 =FILTER(A3:C24,(B3:B24>=E2)*(B3:B24<=F2),"没有符合条件的数据"),空结果就会显示你自定义的提示内容,不会直接抛错。

出现 #SPILL! 报错的时候,说明公式要动态展开的结果区域被原有内容挡住了。把公式右下方所有被占用的单元格清空,动态数组就能正常溢出显示全部结果。

出现 #VALUE! 报错的时候,基本都是条件区域的长度和要返回的数据区域长度不匹配。比如你要返回的 arrayA3:C24,对应的日期条件就必须用 B3:B24,不能写成整列引用 B:B,也不能写成行数不对的 B3:B20

几个能直接套用的日期筛选公式

筛选2024年2月的全部数据:

=FILTER(A3:C24,(B3:B24>=DATE(2024,2,1))*(B3:B24

筛选最近30天的数据:

=FILTER(A3:C24,B3:B24>=TODAY()-30,"没有符合条件的数据")

筛选指定某一天的数据:

=FILTER(A3:C24,B3:B24=DATE(2024,2,20),"没有符合条件的数据")

把这些公式套到你自己的表格里的时候,先替换成你自己的原始数据区域和对应日期列,再调整条件单元格的位置。公式能正常返回结果之后,再去调整字段顺序或者加其他筛选条件,排查问题会省事很多。

来源:整理自互联网
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

精选合集

更多

大家都在玩