Excel日期函数技巧之如何判断某一年是否闰年

今天介绍一个日期函数的技巧,如何判断闰年(非常简单😉)。

我们先来说说复杂的方法

一般来说,在很多关于数据处理的工作中,如果考虑日期数据的话,都会考虑如何判断闰年。在上学时学习编程的时候,好像在开始不久就有一个作业要写程序判断一个年份是否闰年。这个判断依据实际上挺绕的:

只有满足下面两个条件之一的年份才是闰年:

  1. 能被4整除但不能被100整除;

  2. 能被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,"闰年","不是闰年")

使用这个公式判断一下前面的四个年份是否闰年:

非常简单吧

Excel的一个小错误

仔细看上面两个方法的计算结果,你会发现有点小小的不同:

实际上按照闰年的定义,1900年并不是一个闰年,但是在Excel中,1900年是被当作闰年对待的。

这是一个错误吗?显然是的。微软不知道吗?这是不可能的。为什么这么多版本中微软并没有修改这个错误呢?

实际上按照微软的解释,这个错误看上去是一个有意制造的错误:

首先,在Excel刚刚诞生的时候,有另外一个表格软件已经非常流行了——lotus 1-2-3,这个软件本身就把1900年当成了闰年。Excel为了与其兼容,就延续了这个错误。后来,Excel成为主流了,但是微软经过评估认为:1. 毕竟现在离1900年比较远了,受这个错误的影响的用户非常少。2. 修改带来的问题比不修改多多了,所以他们决定就不修改了。

今天的分享就到这里了!
END
(0)

相关推荐