我在Excel中有一个期间列表(由期间开始,期末结束),我必须准确计算该期间的月数(作为一个分数)。
E.g。如果在1月15日到3月7日期间,那么这将是
15-01-2015 until 31-01-2015 = 17 days
01-02-2015 until 28-02-2015 = 28 days
01-03-2015 until 07-03-2015 = 7 days
期间数月= 17/31 + 28/28 + 7/31 = 1,774193548个月
请注意,在此计算中,开始日期和结束日期均计入期间的一部分。
因为句点可以是任何东西,所以我无法用Excel公式计算出来(或者甚至可能)。
有什么想法吗?
答案 0 :(得分:2)
嗯,这不是很好,但是如果你的开始日期是A1,结束日期是A2,那么:
=12*(YEAR(A2)-YEAR(A1))+MONTH(A2)-MONTH(A1) +
(DAY(A2)/(DATE(YEAR(A2),MONTH(A2)+1,1)-DATE(YEAR(A2),MONTH(A2),1))) -
((DAY(A1)-1)/(DATE(YEAR(A1),MONTH(A1)+1,1)-DATE(YEAR(A1),MONTH(A1),1)))
这种方式的工作原理是:
12*(YEAR(A2)-YEAR(A1))
:年份差异12。+MONTH(A2)-MONTH(A1)
:(加上)月份差异。+(DAY(A2)/(DATE(YEAR(A2),MONTH(A2)+1,1)-DATE(YEAR(A2),MONTH(A2),1)))
:(加)结束日期除以结束月份的总天数,由该月份的1 st 与下个月的1 st之间的差值计算得出子> -((DAY(A1)-1)/(DATE(YEAR(A1),MONTH(A1)+1,1)-DATE(YEAR(A1),MONTH(A1),1)))
(分钟)开始日(减去1,不计算当天)月份除以开始月份的总天数。当然,你复制任何一组单元格......
答案 1 :(得分:2)
假设列A列出了开始日期,列B列出了结束日期:
=SUMPRODUCT((1+B1:B3-A1:A3)/DAY(DATE(YEAR(A1:A3),MONTH(A1:A3)+1,)))
注意:您需要增加范围的深度以满足您的需求...只需将3更改为更深的行号。
<强>更新强>
根据您的反馈和新要求,以下是上述公式的一个版本,它将一次计算一行总数:
=(1+B1-A1)/DAY(DATE(YEAR(A1),MONTH(A1)+1,))
更新2
根据新信息,一行的间隔可能超过一个月,以下是该公式的新版本:
=DATEDIF(A1-DAY(A1)+1,B1,"m")-1+(1+EOMONTH(A1,0)-A1)/DAY(DATE(YEAR(A1),MONTH(A1)+1,))+(B1-EOMONTH(B1,-1))/DAY(DATE(YEAR(B1),MONTH(B1)+1,))
重要说明:确认此公式后,您需要将常规数字格式应用于单元格。这是因为Excel将尝试不必要地应用DATE编号格式。
答案 2 :(得分:2)
为什么不使用:
=12*YEARFRAC(StartDate,EndDate)