怎样用Excel计算2个日期之间相差的月数

我想计算2个日期之间的月数相差,但是有2个条件:第一,每个月的1号到15号为该月上半月,记为半个月输出为0.5,16号到月底为下半月,则算满一个月,例如A1时间为2010-1-1,B1时间为2010-7-2,则C1要输出为6.5,如果A1不变,B1为2010-7-16,则C1要输出为7;第二,如果输入的2个时间都在同年同一个月内,则输出结果为0,例如A1时间为2010-1-1,B1时间为2010-1-16,则C1输出为0. 跪求Excel高手帮忙,希望给出函数式,有图有详解的可以加分

在C1输入=IF((YEAR(A1)=YEAR(B1))*(MONTH(A1)=MONTH(B1)),0,(YEAR(B1)-YEAR(A1))*12+MONTH(B1)+IF(DAY(B1)-15>0,1,0.5)-(MONTH(A1)+IF(DAY(A1)-15>0,1,0.5)))+0.5
为了让你好理解,将公式拆解为如下:=IF(X,0,Y)如果条件X成立,返回0,否则返回Y
其中X为(YEAR(A1)=YEAR(B1))*(MONTH(A1)=MONTH(B1))意思是如果A1的年份和B1的相同且A1的月份和B1的月份相同每个等式会返回TRUE(真)后者FALSE(假),真*真为真,其他情况为假。
Y为(YEAR(B1)-YEAR(A1))*12+MONTH(B1)+IF(DAY(B1)-15>0,1,0.5)-(MONTH(A1)+IF(DAY(A1)-15>0,1,0.5))+0.5简化为P-Q+0.5P为(YEAR(B1)-YEAR(A1))*12+MONTH(B1)+IF(DAY(B1)-15>0,1,0.5)Q为MONTH(A1)+IF(DAY(A1)-15>0,1,0.5)意思把A1、B1分别转化为两个小数,整数部分代表月,小数部分代表半个月。
Q好理解:A1的月份加上,如果A1的日比15大就是1,小于等于15为0.5。
P一样,只是考虑了年的影响:(YEAR(B1)-YEAR(A1))*12,即年份的差乘以12(1年12个月)
最后一个0.5是因为你要求连“皮”计算(比如1号到2号是几天,有人认为是1,有人认为是2-1+1共2天)。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-25
简单办法:1、在C1输入=A1,在D1输入=B1,然后拖动,将日期复制一份。2、将C、D的单元格式设置为“常规”,显示的数值很特别,不理它。3、在E1中输入=INT((B2-B1)/30)+0.5,拖动,这样会显示0.5,无法显示0。4、在F1中再输语句=IF(D1<1,0,D1),搞定收工! 说明,第一步其实可以省略,实质是复制一份,免得你以为出错了。第三、四步可以全并的,直接在e1输入以下语句就行:=IF((INT(C1)+0.5)<1,0,(INT(C1)+0.5))
第2个回答  2019-03-14
经我试验,下面公式能满足你的要求.
假设:日期1位于A1单元格,日期时间2位于B1单元格,且时间2大于时间1。
那么你要的公式就如下,
=IF((YEAR(B1)-YEAR(A1))*12+MONTH(B1)-MONTH(A1)=0,0,(YEAR(B1)-YEAR(A1))*12+MONTH(B1)-MONTH(A1)+IF(DAY(B1)-DAY(A1)>15,1,0.5))
另外要注意,使用上述公式的单元格的格式要设置为“常规”。
第3个回答  2013-07-25
C1需要输入的公式为=IF(AND(YEAR(A1)=YEAR(B1),MONTH(A1)=MONTH(B1)),0,(YEAR(B1)-YEAR(A1))*12+MONTH(B1)-MONTH(A1)+IF(DAY(B1)>15,1,0.5))