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

Excel基于两个输入字段计算下一个到期日期的问题求助

需求与问题描述

输入字段

我希望通过上述输入字段实现以下功能:

  • 让Excel提取上方单元格的值作为日期的日部分,若该值大于当月最后一天(例如31日用于只有30天的月份),则返回当月最后一天。
  • 若请求日期是该日的前一天、当天或之后(例如请求日期为09/02/2024、10/02/2024或15/02/2024,而月度纪念日字段为10),则需在请求日期基础上加1个月,同时保留月度纪念日的日部分;否则返回以月度纪念日为日部分的请求日期当月日期。

简言之:若请求日期是月度纪念日的前一天、当天或之后,则返回下一个月的月度纪念日;否则返回当月的月度纪念日。

我已实现大部分功能,但存在一个问题:当月度纪念日大于请求日期所在月份的天数时,公式会跳转到下一个月而非保留当月。

现有公式

我使用两个配合的公式:

  • 手动计算下一个月的月度纪念日(位于B20单元格):
    =IF(B4 > DAY(EOMONTH(B5,1)), EOMONTH(B5,1), DATE(YEAR(B5), MONTH(B5) + 1, DAY(B4)))
    
  • 处理其他逻辑的计算(位于B19单元格):
    =IF(AND(B4 = 1, DAY(B5) = DAY(EOMONTH(B5, 0))), EDATE(B20, 1), IF(B4 <= DAY(B5), B20, IF(B4 > DAY(EOMONTH(B5, 0)), EDATE(B20,0), IF(B4 - DAY(B5) = 1, B20, EDATE(B20, -1)))))
    

错误案例展示

更新后的表格展示了预期结果与当前公式的问题(仅在月末日期场景出错):

月度纪念日请求日期预期下一个纪念日当前公式效果
1510/03/202415/03/2024正常
1520/03/202415/04/2024正常
1515/03/202415/04/2024正常
1514/03/202415/04/2024正常
129/02/202401/04/2024正常
131/03/202401/05/2024正常
130/03/202401/04/2024正常
125/03/202401/04/2024正常
3101/02/202429/02/2024正常
3101/03/202431/03/2024异常 - 返回30/03/2024
3130/04/202431/05/2024正常
3130/03/202430/04/2024异常 - 返回30/03/2024
3129/02/202431/03/2024正常
3001/02/202429/02/2024异常 - 返回30/03/2024
3001/03/202430/03/2024正常
3029/03/202430/04/2024正常
3031/03/202430/04/2024正常

希望能得到帮助解决该问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:57:10