如何编写公式判断指定日期是否处于假期起止日期区间内?
判断日期是否属于假期区间的公式方案
嘿,这个需求在处理考勤、日程表时超常见!我给你分享几个适用于Excel和Google Sheets的实用公式,轻松搞定“是否假期?”列的判断:
核心思路
我们要检查当前日期是否落在任意一条假期记录的开始-结束区间内,只要匹配到一个区间,就标记为YES,否则为NO。
方案1:通用公式(Excel/Google Sheets都适用)
假设你的假期记录表在Sheet1,开始日期列是A,结束日期列是B;日期表在Sheet2,待判断日期在A列,要在B列写公式:
=IF(COUNTIFS(Sheet1!$A:$A,"<="&A2,Sheet1!$B:$B,">="&A2)>0,"YES","NO")
公式解释:
COUNTIFS会统计同时满足两个条件的假期记录行数:- 假期开始日期 ≤ 当前待判断日期(
Sheet1!$A:$A,"<="&A2) - 假期结束日期 ≥ 当前待判断日期(
Sheet1!$B:$B,">="&A2)
- 假期开始日期 ≤ 当前待判断日期(
- 如果统计结果大于0,说明当前日期在某个假期区间里,返回
YES;否则返回NO。
方案2:Excel 365/2021 简化版
如果你用的是新版Excel(支持动态数组),可以用更简洁的写法:
=IF(OR((A2>=Sheet1!$A$2:$A$100)*(A2<=Sheet1!$B$2:$B$100)),"YES","NO")
公式解释:
(A2>=Sheet1!$A$2:$A$100)*(A2<=Sheet1!$B$2:$B$100)会生成一个数组,每一行对应一个假期区间的判断结果(满足为1,不满足为0)OR函数只要数组里有一个1,就返回TRUE,最终输出YES。
方案3:动态范围优化(避免手动调整行号)
如果假期记录会不断新增,建议把假期表转换成结构化表(Excel按Ctrl+T,Google Sheets选数据后点「数据」→「创建表格」),这样公式会自动识别新增的行:
假设结构化表名为HolidayList,公式可以写成:
=IF(COUNTIFS(HolidayList[开始日期],"<="&A2,HolidayList[结束日期],">="&A2)>0,"YES","NO")
注意事项
- 确保两张表的日期都是真正的日期格式,不是文本!可以用
=ISDATE(A2)检查,若返回FALSE,需要把文本转换成日期(Excel用「数据」→「分列」,Google Sheets用DATEVALUE函数)。 - 如果假期表有空白行,建议把公式里的范围限定在实际数据行(比如
Sheet1!$A$2:$A$100),避免计算空白单元格影响结果。
内容的提问来源于stack exchange,提问作者JDOE
相关产品推荐
相关产品推荐

