一年中的天数Excel VBA

我想根据date来计算专用年份的天数,例如,使用excel vba的2015年。 2015年应该有365天,这是非闰年,2016年是366闰年。

一个date将是,例如01.02.2015,并基于2015年,我想知道在2015年有多less天。有没有办法做到这一点在vba?

要么

 Public Function daysinyear(lngyear As Long) As Long daysinyear = DateDiff("d", DateSerial(lngyear, 1, 1), DateSerial(lngyear + 1, 1, 1)) End Function 

这适用于大多数目的,例如1901-2099:

 =IF(MOD(YEAR(A1),4),365,366) 

正如@tigeravatar所指出的,对于更严格的逻辑来说,试试这个:

 =IF(MOD(YEAR(A1),4),365,IF(MOD(YEAR(A1),100),366,IF(MOD(YEAR(A1),400),365,366))) 

来源: 维基百科的方便algorithm:

  1. 如果(年份不能被4整除)那么(这是常年)
  2. 否则,如果(年份不能被100整除)那么(这是一个闰年)
  3. 否则如果(年份不能被400整除)则(这是一个常见的年份)
  4. 其他(这是一个闰年)

Excel 2013引入了DAYS函数 。

 =DAYS(DATE(2017, 12, 31), DATE(2017, 1, 1))+1 

NETWORKDAYS.INTL函数是在同一时间引入的。 将其设置为包括所有日子。

 =NETWORKDAYS.INTL(DATE(2017, 1, 1), DATE(2017, 12, 31), "0000000") 

只需从今年12月31日前一年减去12/31:

 =DATE(YEAR(A2),12,31)-DATE(YEAR(A2)-1,12,31) 

在这里输入图像说明