一年中的天数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:
- 如果(年份不能被4整除)那么(这是常年)
- 否则,如果(年份不能被100整除)那么(这是一个闰年)
- 否则如果(年份不能被400整除)则(这是一个常见的年份)
- 其他(这是一个闰年)
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)