我正在尝试根据日期计算专用年份的天数,例如2015使用excel vba。 2015年应该是365天,这是非闰年,2016年是366,这是闰年。
日期将是例如2015年2月1日,基于2015年,我想知道2015年有多少天。有没有办法在vba中做到这一点?
答案 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方便的算法:
- 如果(年份不能被4整除)那么(这是常见的一年)
- 如果(年份不能被100整除)那么(这是闰年)
- 如果(年份不能被400整除)那么(这是常见的一年)
- 其他(这是闰年)
醇>
答案 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)
答案 4 :(得分:0)
该问题要求提供VBA解决方案。这是根据the日的存在来确定天数的方法:
Public Function daysinyear(lngyear As Long) As Long
daysinyear = 368 - Month(DateSerial(lngyear, 2, 29))
End Function