You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在指定月份处于两个日期区间时自动填充列?

实现指定月份匹配日期区间的自动填充公式

适用场景(Excel 365/2021 动态数组版本)

假设表格结构:

  • A列:待提取的名称
  • B列:开始日期
  • C列:结束日期
  • D列:复选框(勾选返回TRUE,未勾选返回FALSE)
  • F1:目标月份(输入日期格式,比如2024-5-1代表五月)

在需要填充的单元格输入以下公式,将自动生成所有符合条件的名称:

=FILTER(A:A, (B:B<=EOMONTH(F1,0))*(C:C>=EOMONTH(F1,-1)+1)*(D:D=FALSE), "无匹配")

公式说明

  • EOMONTH(F1,-1)+1:计算目标月份的第一天(例:F1为2024-5-10时,结果为2024-5-1)
  • EOMONTH(F1,0):计算目标月份的最后一天(例:2024-5-31)
  • B:B<=EOMONTH(F1,0):确保开始日期不晚于目标月份最后一天
  • C:C>=EOMONTH(F1,-1)+1:确保结束日期不早于目标月份第一天
  • 以上两个条件组合,判断目标月份与B-C的日期区间存在重叠
  • D:D=FALSE:排除D列复选框已勾选的行
  • "无匹配"为无符合条件数据时的显示文本,可按需修改

兼容旧版Excel(无FILTER函数)

若Excel版本不支持动态数组,使用以下数组公式(输入后按Ctrl+Shift+Enter确认,再下拉填充):

=IFERROR(INDEX(A:A,SMALL(IF((B:B<=EOMONTH(F1,0))*(C:C>=EOMONTH(F1,-1)+1)*(D:D=FALSE),ROW(A:A)),ROW(A1))),"")

特殊情况处理(F1为文本月份)

若F1输入的是文本格式月份(比如五月),先将文本转换为对应日期再计算,公式调整为:

=FILTER(A:A, (B:B<=EOMONTH(DATEVALUE(F1&" 1"),0))*(C:C>=EOMONTH(DATEVALUE(F1&" 1"),-1)+1)*(D:D=FALSE), "无匹配")

注意事项

  1. 确保B、C列是标准日期格式,而非文本格式(可通过设置单元格格式为「日期」验证)
  2. 若复选框勾选后返回数字1而非TRUE,将公式中的D:D=FALSE改为D:D=0即可

内容的提问来源于stack exchange,提问作者spence1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 22:11:13