Excel技术问询:如何通过公式判断日期是否在指定区间并返回预设Y/N值
嗨艾伦,我来帮你搞定这个Excel自动填充的需求!
首先咱们先明确下假设的数据布局(你可以根据自己的实际表格调整对应列):
- 时间段数据区域:假设D列存开始日期,E列存结束日期,F列对应每个时间段的标记"Y"/"N"(比如D2:D100、E2:E100、F2:F100是你的时间段数据范围)
- 待匹配的日期列表:在A列(从A2开始是需要判断的各个日期),咱们要在相邻的B列自动填入对应的"Y"/"N"
解决方案
方案1:Excel 365/2021 简洁版(用XLOOKUP)
在B2单元格输入以下公式,然后下拉填充即可:
=XLOOKUP(TRUE, (A2 >= $D$2:$D$100) * (A2 <= $E$2:$E$100), $F$2:$F$100, "N")
公式说明:
(A2 >= $D$2:$D$100) * (A2 <= $E$2:$E$100):生成一个布尔数组,检查当前日期A2是否落在某个时间段内,符合条件的位置返回TRUE- XLOOKUP会找到第一个
TRUE对应的F列标记值;如果日期不属于任何时间段,就返回默认值"N"(你可以根据需求改成其他值,比如空文本"")
方案2:旧版本Excel兼容版(用INDEX+MATCH)
如果你的Excel版本不支持XLOOKUP,用这个数组公式:
在B2单元格输入公式后,按Ctrl+Shift+Enter完成输入(Excel 365/2021直接回车即可),再下拉填充:
=IFERROR(INDEX($F$2:$F$100, MATCH(TRUE, (A2 >= $D$2:$D$100) * (A2 <= $E$2:$E$100), 0)), "N")
公式说明:
MATCH(TRUE, ..., 0):找到第一个满足时间段条件的行号INDEX($F$2:$F$100, ...):根据行号提取对应的"Y"/"N"标记IFERROR(..., "N"):处理日期不在任何时间段的情况,返回默认值"N"
注意事项
- 确保所有日期都是Excel可识别的日期格式,不要是文本格式(可以选中日期列,右键设置单元格格式为"短日期"或"长日期")
- 如果存在重叠的时间段,公式会返回第一个匹配到的标记,所以如果需要优先级,记得把高优先级的时间段放在数据区域的上方
- 推荐把时间段数据转换成Excel表格(选中区域按Ctrl+T),这样公式会自动识别新增的时间段,不用手动调整公式里的单元格范围
内容的提问来源于stack exchange,提问作者Alan Tingey
相关产品推荐
相关产品推荐

