如何用excel公式计算两个日期之间的自然月份数?

这里的自然月份指的是完整的一个自然月,比如,2018年10月12日到2018年12月2日之间,只有11月是完整的自然月,所以这两个日期的计算结果应为1,而2018年10月1日到2018年12月31日,则10、11、12这三个月都是完整的自然月,这两个日期的计算结果为3

度友,datedif函数配合if函数,eomonth函数可以达到目的,

具体公式为:=IF(AND(A2<>"",B2<>""),IF(AND(DAY(A2)=1,DAY(B2)=DAY(EOMONTH(B2,0))),DATEDIF(A2,B2,"M")+1,IF(OR(DAY(A2)=1,DAY(B2)=DAY(EOMONTH(B2,0))),DATEDIF(A2,B2,"M"),DATEDIF(A2,B2,"M")-1)),"")

如有疑问可以继续讨论!

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-12-15

Excel中计算两个日期之间的月数需要用到日期函数:DATEDIF,该函数能够计算两个日期之间的相差的年数、月数、天数。

函数及参数说明

函数:DATEDIF(start_date,end_date,unit)

Start_date:为一个日期,它代表时间段内的第一个日期或起始日期。

End_date:为一个日期,它代表时间段内的最后一个日期或结束日期。

Unit:为所需信息的返回类型。

Unit取不同值的含意:

"Y"——时间段中的整年数。 

"M"——时间段中的整月数。 

"D"——时间段中的天数。  

"YM"——start_date 与 end_date 日期中月数的差。忽略日期中的日和年。 

"YD"——start_date 与 end_date 日期中天数的差。忽略日期中的年。 

"MD"——start_date 与 end_date 日期中天数的差。忽略日期中的月和年。

举例说明。

开始日期:2012/12/21

结束日期:2014/2/26

在单元格C2中输入公式  =DATEDIF(A2,B2,"Y")

在单元格D2中输入公式  =DATEDIF(A2,B2,"YM")

在单元格E2中输入公式  =DATEDIF(A2,B2,"MD")

在单元格F2中输入公式  =DATEDIF(A2,B2,"D")

结果说明。

2012/12/21与2014/2/26之间相隔1年、2个月、零5天,即14个月、零5天,总共相隔432天。

第2个回答  2019-12-14

公式:

=YEAR(B1)*12+MONTH(B1)-YEAR(A1)*12-MONTH(A1)-IF(DAY(A1)=1,DAY(B1+1)<>1,DAY(B1)<DAY(A1)-1)*1

示例:

能判断大小月、以及2月闰平年

追问

要计算的不是足月数,是自然月数,说简单点就是计算两个日期之间有几个完整的月份,比如1月要从1号到31号才算一个完整月,2月2号到3月30号之间是没有完整月的

追答

请仔细看例子,完全满足你的需求。

追问

按要求,c1到c7的正确值应分别为1,1,1,1,3,4,5

本回答被网友采纳
第3个回答  2019-12-14
只有完整的一个月才算1,那么请试试以下公式
=(YEAR(B1)-1900)*12+MONTH(B1)+IF(DAY(B1+1)=1,1,0)-((YEAR(A1)-1900)*12+MONTH(A1)+IF(DAY(A1)=1,0,1))
你的这个问题中,(某天是不是该月的第一天很容易判断)
碰到的难题就是:如何判断某天是不是该月的最后一天。
这里用到的技巧就是:用某一天再加上一天,看它是不是1日,如果是1日,则它是该月的最后一天,否则不是最后一天,
公式中的1900也可以不要,,,-------------祝您办公愉快
第4个回答  2019-12-15
=(DAY(A1)=1)+SUMPRODUCT(DAY(A1+ROW(INDIRECT("a1:a"&B1-A1)))=1)-(DAY(B1)<>DAY(EOMONTH(B1,0)))
相似回答