You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Excel日期倒推技术问询:如何修改公式始终返回上月月末日期

解决Excel倒推上月月末日期的公式问题

这个问题我之前处理过好几次,原来的公式在遇到当月第一天时会因为日期计算的逻辑偏差出错,不过有两个非常靠谱的解决办法:

方法1:使用专用函数EOMONTH(推荐)

直接用Excel专门为月末日期设计的EOMONTH函数,公式非常简洁:

=EOMONTH(D1, -1)
  • 原理EOMONTH的作用就是返回指定日期往前或往后n个月的月末日期,这里的-1表示往前推1个月。不管D1是当月第一天还是任意日期,它都能准确返回上月的最后一天,可读性和稳定性都拉满。

方法2:改进DATE公式(兼容所有Excel版本)

如果你需要兼容一些不支持EOMONTH的旧版Excel,可以把原来的公式改成这样:

=DATE(YEAR(D1), MONTH(D1), 0)
  • 原理:Excel的DATE函数有个实用特性——当日期参数填0时,会自动回退到上一个月的最后一天。比如:
    • 当D1是01-01-2018时,DATE(2018, 1, 0)会返回31-12-2017
    • 当D1是30-11-2017时,DATE(2017, 11, 0)会返回31-10-2017
      完全符合你“始终倒推至当月的上月月末”的需求。

为什么原来的公式会出错?

你原来的公式=DATE(YEAR(D1),MONTH(D1-1),),当D1是当月第一天时,D1-1会变成上月最后一天,MONTH(D1-1)得到的是上月的月份,这时候DATE(YEAR(D1), 上月月份,)其实是在当前年份的上月找月末,比如D1是01-01-2018时,就会变成DATE(2018,12,),也就是2018年12月的月末,这显然不是你要的结果。而上面的两种方法都完美规避了这个逻辑漏洞。

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

火山引擎 最新活动