回复:请教:EXCEL中时间跨度计算公式

来源:百度知道 编辑:UC知道 时间:2024/05/28 11:49:35
在EXCEL中计算2006.05.28至2007.03.25之间有多少个月,不足一月的时间以小数表示,结果显示为0.0月的计算公式,因计算量大,请大虾指教
答案正确的分数可以追加
A B C D
1 2006/05/28 2007/03/25
2
另请教在C1中计算整月部分,在D1中计算不足一月部分

在Excel, 如要求1天都不能有误差, 任何计算公式, 同时涉及月和日的数量, 都是会非常长及复杂的
方法:
1.) 先用 DATEDIF 函数 计算完整月数:
=DATEDIF(A1,B1,"m")
2.) 如 B1的日是大于A1的日:
分子是 DAY(B1)-DAY(A1)
分母是 B1该月的总天数,公式是
=DAY(DATE(YEAR(B1),MONTH(B1)+1,1)-1)
小数值 是 分子/分母, 即
=(DAY(B1)-DAY(A1))/DAY(DATE(YEAR(B1),MONTH(B1)+1,1)-1)
3.) 如B1的日是少于A1的日:
分子是 DAY(B1)-DAY(A1) + B1 上一个月份的天数
分母是 B1 上一个月份的总天数,公式是
=DAY(DATE(YEAR(B1),MONTH(B1),1)-1)
小数值 是 分子/分母, 即
=(DAY(B1)-DAY(A1)+DAY(DATE(YEAR(B1),MONTH(B1),1)-1))/DAY(DATE(YEAR(B1),MONTH(B1),1)-1)

将以上三条公式合并, 便是楼主要的答案, 1天都不会偏差
=DATEDIF(A1,B1,"M")+IF(DAY(B1)>=DAY(A1),(DAY(B1)-DAY(A1))/DAY(DATE(YEAR(B1),MONTH(B1)+1,1)-1),IF(DAY(B1)<DAY(A1),(DAY(B1)-DAY(A1)+DAY(DATE(YEAR(B1),MONTH(B1),1)-1))/DAY(DATE(YEAR(B1),MONTH(B1),1)-1)))
=9.9(月) 或 9.892857143(月)

补充:
公式太长了, 我刚将公式简化如下:
=DATEDIF(A1,B1,"M")+DATEDIF(A1,B1,"MD")/DAY(DATE(YEAR(B1),MONTH(B1)+IF(DAY(B1)&g