如何在Excel中检查某表格列的日期是否处于另一表格列的日期范围内?
Excel日期时间匹配日出日落区间的解决方案
核心逻辑
你的需求本质是:用表格1里的带时间的日期,匹配表格2中对应日期的日出、日落时间,判断该日期时间是否落在这两个时间构成的区间内。
公式实现(分版本)
假设前提
- 表格1的日期时间数据位于
Sheet1!A2(首行为表头) - 表格2的日期列是
Sheet2!A:A,日出时间列是Sheet2!B:B,日落时间列是Sheet2!C:C
方法1:Excel 365/2021及以上(用XLOOKUP)
在表格1的空白列(比如B2)输入公式,下拉填充即可:
=IF(AND(A2>=XLOOKUP(INT(A2),Sheet2!A:A,Sheet2!B:B),A2<=XLOOKUP(INT(A2),Sheet2!A:A,Sheet2!C:C)),"在日出日落区间内","不在区间内")
INT(A2):提取日期时间中的纯日期,用来匹配表格2的日期行XLOOKUP:精准匹配对应日期的日出/日落时间AND:验证当前时间是否在日出和日落之间
方法2:兼容所有Excel版本(用INDEX+MATCH)
如果你的Excel不支持XLOOKUP,用这个替代:
=IF(AND(A2>=INDEX(Sheet2!B:B,MATCH(INT(A2),Sheet2!A:A,0)),A2<=INDEX(Sheet2!C:C,MATCH(INT(A2),Sheet2!A:A,0))),"在日出日落区间内","不在区间内")
MATCH(INT(A2),Sheet2!A:A,0):找到表格2中对应日期的行号INDEX:根据行号提取对应的日出/日落时间
异常处理
如果表格1的日期在表格2中无匹配记录,公式会返回#N/A,可以用IFERROR包裹处理:
=IFERROR(IF(AND(A2>=XLOOKUP(INT(A2),Sheet2!A:A,Sheet2!B:B),A2<=XLOOKUP(INT(A2),Sheet2!A:A,Sheet2!C:C)),"在日出日落区间内","不在区间内"),"无对应日期数据")
注意事项
- 确保表格2的日期列是纯日期格式,表格1的列是日期时间格式,格式不统一会导致匹配失败
- 提前清理表格2中的重复日期,避免
MATCH返回错误的行号
内容的提问来源于stack exchange,提问作者user13453204
相关产品推荐
相关产品推荐

