多语言展示
当前在线:646今日阅读:150今日分享:23

EXCEL精确计算两个日期之间的间隔月

日期间隔月经常会遇到大小月问题,或者无法精确到小数后多位,或者就是月底计算会不足月问题
工具/原料
1

excel

2

eomonth、datedif、date、year、month、day函数

方法/步骤
1

开始日期占当月天数的比例(EOMONTH(开始日期,0)- 开始日期+1)/DAY(EOMONTH(开始日期,0)),例如计算开始日期为2018/2/10日,则为2018/2/28-2018/2/10+1=19天,比上当月实际天数即为当月最后一天的天数28天。所以开始日期占当月天数比例为19/28。

2

结束日期占当月天数的比例DAY(结束日期)/DAY(EOMONTH(结束日期,0)),例如结束日期为2018/4/20日,与开始日期占比的计算类似,不过更加简单。即为20/30。

3

中间相隔月数使用datedif函数,但是我们要避免此函数结束日期中的“日”小于开始日期中的“日”,则按不足一月算的问题。敲黑板,此处是重点。改为计算每月1日之间的间隔月份。这样就巧妙的避开了“月大31”、“月平30”、“月小28,29”的问题:DATEDIF(EOMONTH(开始日期,0)+1, DATE(YEAR(结束日期),MONTH(结束日期),1),'m'),例如2018/2/10与2018/4/20掐头去尾的的中间相隔月数就变成计算2018/3/1与2018/4/1之间的间隔月了。

4

最终任意两个日期之间精确间隔月的函数为:(EOMONTH(开始日期,0)- 开始日期+1)/DAY(EOMONTH(开始日期,0))+ DAY(结束日期)/DAY(EOMONTH(结束日期,0))+ DATEDIF(EOMONTH(开始日期,0)+1, DATE(YEAR(结束日期),MONTH(结束日期),1),'m')

5

此方法与其他几种方法的对比

注意事项
1

datedif函数要避免做月底日期之间的计算,因为会存在结束日期中的“日”小于开始日期中的“日”,则按不足一月算的问题。

2

如果需要保留两位小数则再使用round函数

推荐信息