计算期间

时间:2015-09-30 21:45:40

标签: excel date datetime excel-formula

我在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公式计算出来(或者甚至可能)。

有什么想法吗?

3 个答案:

答案 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)))

这种方式的工作原理是:

  1. 12*(YEAR(A2)-YEAR(A1)):年份差异12。
  2. +MONTH(A2)-MONTH(A1) :(加上)月份差异。
  3. +(DAY(A2)/(DATE(YEAR(A2),MONTH(A2)+1,1)-DATE(YEAR(A2),MONTH(A2),1))) :(加)结束日期除以结束月份的总天数,由该月份的1 st 与下个月的1 st之间的差值计算得出
  4. -((DAY(A1)-1)/(DATE(YEAR(A1),MONTH(A1)+1,1)-DATE(YEAR(A1),MONTH(A1),1)))(分钟)开始日(减去1,不计算当天)月份除以开始月份的总天数。
  5. 当然,你复制任何一组单元格......

答案 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)