如何用Excel判断日期是否属于多个日期范围(申根区停留统计)
申根区180天滚动停留统计自动实现方案
一、设置停留记录辅助表
- 新建工作表并命名为「停留记录」,A列输入停留起始日期(从A2开始),B列输入停留结束日期(从B2开始),支持无限新增行记录任意数量的停留区间。
二、主表自动标记停留日期
假设主表A列是需要统计的完整日期序列(从A2开始),在B2单元格输入以下公式,下拉填充即可自动标记当日是否在停留期(1=停留,0=未停留):
=IF(SUMPRODUCT(--(停留记录!$A$2:$A$1000<=A2),--(停留记录!$B$2:$B$1000>=A2))>0,1,0)
- 公式说明:
SUMPRODUCT遍历所有停留区间,判断当前日期是否落在任意一个区间内,只要有一个区间匹配就返回1;--用于将布尔判断结果转换为数字(True=1,False=0)。 - 若使用Excel 365/2021,可通过动态数组函数一次性生成所有标记(无需下拉):
=BYROW(A2:A1000,LAMBDA(date,IF(SUM(--(停留记录!A2:A1000<=date),--(停留记录!B2:B1000>=date))>0,1,0)))
三、180天滚动窗口累计停留计算
- 滚动窗口起始日期(主表C列):在C2输入
=A2-179,下拉填充,得到当前日期往前推179天的日期(即180天周期的起始点)。 - 累计停留天数(主表D列):在D2输入以下公式,下拉填充即可自动计算180天内的累计停留天数:
=SUMIFS(B:B,A:A,">="&C2,A:A,"<="&A2)
注意事项
- 确保「停留记录」和主表的日期格式一致,避免因格式不匹配导致判断失效。
- 可给「停留记录」的A、B列设置日期型数据验证,防止输入非日期内容。
- 公式中的
1000可根据实际需要调整为更大的行数,覆盖所有可能的停留记录。
内容的提问来源于stack exchange,提问作者PedroKTFC
相关产品推荐
相关产品推荐

