基于项目起止日期判断特定时段项目是否活跃的公式需求
解决方案:项目活跃状态判断公式
核心逻辑
项目活跃的判定标准是:项目的时间区间(开始日 → 结束日/报告日)与目标时间区间(自然年份/财年)存在重叠。以下分两种场景给出公式,同时适配空结束日期的情况。
1. 自然年份判断(如2023年)
假设:
I2= 项目开始日期J2= 项目结束日期(空值表示持续至当前报告日,用TODAY()获取当日日期)- 目标年份:2023年(时间范围:2023/1/1 ~ 2023/12/31)
公式:
=AND(IF(J2="",TODAY(),J2)>=DATE(2023,1,1), I2<=DATE(2023,12,31))
说明:
IF(J2="",TODAY(),J2):处理空结束日期,自动替换为当前报告日AND(...):同时满足两个条件则返回TRUE(活跃),否则FALSE:- 项目结束时间(或报告日)≥ 目标年份的起始日
- 项目开始时间 ≤ 目标年份的结束日
2. 财年判断(如2022-23财年,4月至次年3月)
假设目标财年为2022-23(时间范围:2022/4/1 ~ 2023/3/31),单元格定义同上。
公式:
=AND(IF(J2="",TODAY(),J2)>=DATE(2022,4,1), I2<=DATE(2023,3,31))
通用化优化(方便批量修改)
如果需要频繁切换目标年份/财年,可以把参数放到单元格里,避免重复修改公式:
自然年份通用版
假设K2单元格存放目标年份(如2023):
=AND(IF(J2="",TODAY(),J2)>=DATE(K2,1,1), I2<=DATE(K2,12,31))
财年通用版
假设K2单元格存放财年起始年份(如2022代表2022-23财年):
=AND(IF(J2="",TODAY(),J2)>=DATE(K2,4,1), I2<=DATE(K2+1,3,31))
你之前公式的问题
原公式=IF(AND(J2>DATEVALUE("31/12/2022"),I2<DATEVALUE("01/04/2024")),TRUE,FALSE)存在两个问题:
- 条件逻辑错误:应该判断项目区间与目标区间的重叠,而非项目结束日晚于目标区间结束、项目开始日早于目标区间开始
- 未处理空结束日期的情况,导致空值会被判定为不满足条件
内容的提问来源于stack exchange,提问作者GSF
相关产品推荐
相关产品推荐

