Excel日期函数技巧之如何判断某一年是否闰年
今天介绍一个日期函数的技巧,如何判断闰年(非常简单😉)。
一般来说,在很多关于数据处理的工作中,如果考虑日期数据的话,都会考虑如何判断闰年。在上学时学习编程的时候,好像在开始不久就有一个作业要写程序判断一个年份是否闰年。这个判断依据实际上挺绕的:
只有满足下面两个条件之一的年份才是闰年:
能被4整除但不能被100整除;
能被400整除;
写成Excel公式就是:
=IF(OR(MOD(A1,400)=0,AND(MOD(A1,4)=0,MOD(A1,100)<>0)),"闰年", "不是闰年")
上面那个方法逻辑有点绕,容易把人搞糊涂了,我们介绍一个简单的方法。
我们知道,在Excel中两个日期可以直接相减:
="2020/12/31"-"2020/12/30"
表示两个日期之间相差几天。上面这个公式结果是1,表示两个日期之间差了1天。
如果我们想计算两个日期之间包含多少天(含两头的日期),那么可以将公式改成:
="2020/12/31"-"2020/12/30"+1
结果就是2,表示2天。
于是,我们可以使用公式:
="2020/12/31"-"2020/1/1"+1
来计算2020年一共多少天。如果该结果是366天,就是闰年,否则就不是闰年。
所以,我们可以使用如下公式:
=IF((A1 & "/12/31")-(A1&"/1/1")+1=366,"闰年","不是闰年")
使用这个公式判断一下前面的四个年份是否闰年:
非常简单吧
仔细看上面两个方法的计算结果,你会发现有点小小的不同:
实际上按照闰年的定义,1900年并不是一个闰年,但是在Excel中,1900年是被当作闰年对待的。
这是一个错误吗?显然是的。微软不知道吗?这是不可能的。为什么这么多版本中微软并没有修改这个错误呢?
实际上按照微软的解释,这个错误看上去是一个有意制造的错误:
首先,在Excel刚刚诞生的时候,有另外一个表格软件已经非常流行了——lotus 1-2-3,这个软件本身就把1900年当成了闰年。Excel为了与其兼容,就延续了这个错误。后来,Excel成为主流了,但是微软经过评估认为:1. 毕竟现在离1900年比较远了,受这个错误的影响的用户非常少。2. 修改带来的问题比不修改多多了,所以他们决定就不修改了。