一年中Excel VBA的天数

时间:2017-06-14 13:54:25

标签: excel vba excel-vba

我正在尝试根据日期计算专用年份的天数,例如2015使用excel vba。 2015年应该是365天,这是非闰年,2016年是366,这是闰年。

日期将是例如2015年2月1日,基于2015年,我想知道2015年有多少天。有没有办法在vba中做到这一点?

5 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:4)

这适用于大多数用途,例如: 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)))

来源:Wikipedia's方便的算法:

  
      
  1. 如果(年份不能被4整除)那么(这是常见的一年)
  2.   
  3. 如果(年份不能被100整除)那么(这是闰年)
  4.   
  5. 如果(年份不能被400整除)那么(这是常见的一年)
  6.   
  7. 其他(这是闰年)
  8.   

答案 2 :(得分:3)

Excel 2013引入了DAYS function

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

NETWORKDAYS.INTL function同时被引入。将其设置为包含所有日期。

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

答案 3 :(得分:2)

从所需年份的12/31中减去前一年的12/31:

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

enter image description here

答案 4 :(得分:0)

该问题要求提供VBA解决方案。这是根据the日的存在来确定天数的方法:

Public Function daysinyear(lngyear As Long) As Long
    daysinyear = 368 - Month(DateSerial(lngyear, 2, 29))
End Function