平年闰年判断和英文月份转换

1.平年/闰年判断
如下图所示,根据A列的年份判断是平年还是闰年。这里的判断依据是看2月份是28天还是29天。如果是28天,那么是平年;如果是29天,那么是闰年。所以我们先要算出各年2月份的天数。
上次分享的计算月份天数的方法,小伙伴们还没有忘记吧。可以用下个月的1号往前推1天,就是当月的最后1天的日期。然后再用day提取出天数就可以了。在B3单元格输入公式=DAY(DATE(A3,3,)),向下填充,得到上图B列的结果。
DATE(A3,3,)就相当于2010-3-1往前推1天,也就是2月的最后1天的日期。=DAY(DATE(A3,3,))就是用day函数从2月的最后1天的日期中取出天数,就得到了2月的天数。
2月的天数算出来了,平年/闰年就好判断了。在C3单元格输入公式=IF(DAY(DATE(A3,3,))=28,"平年","闰年"),向下填充,得到上图C列的结果。用if函数判断,如果2月的天数等于28天,就是平年;否则是闰年。
计算2月份的天数还可以用3月1号减去2月1号。公式为=DATE(A3,3,1)-DATE(A3,2,1)。那么平年/闰年的计算公式为=IF(DATE(A3,3,1)-DATE(A3,2,1)=28,"平年","闰年"),同样是这一思路,公式还可以写为=IF(SUM((A3&-{3,2})*{1,-1})=28,"平年","闰年")。
下面再来看另一种思路,公式为=IF(MONTH(DATE(A3,2,29))=2,"闰年","平年"),结果如下图D列所示。我对这个公式分步拆解了,DATE(A3,2,29)这部分是判断各年的2月是否有29号,如果有29号,那么返回的结果还是2月29号;否则,返回3月1号。date会自动转换日期,结果如B列所示。比如2010年就没有2月29号,所以返回的结果为2010-3-1。
MONTH(DATE(A3,2,29))这部分用month提取上一步结果的月份,如上图C列所示。2月有29号的提取的月份还是2,2月没有29号的提取的月份是3。所以用if判断,如果提取出的月份是2,那么就是闰年,否则是平年。
同样我们还可以对DATE(A3,2,29)得到的日期提取天数,如果提取的天数是29天,那么就是闰年,否则是平年。因为提取出的天数只有1和29两种,所以也可以判断提取的天数是否是1,如果是1,那么是平年,否则是闰年。公式为=IF(DAY(DATE(A3,2,29))=1,"平年","闰年")。
只用2月的最后1天来判断平年还是闰年,就可以写这么多公式。除了用2月的28天和29天来判断,还有其他的判断依据。如果你问判断依据是怎么来的,我也不清楚,你可以研究下日历或地理。我只是教大家如何根据给定条件或规则的逻辑关系,编写函数公式。
2.英文月份转换成数字月份或中文月份
如下图所示,将A列的英文月份变为B列的数字月份和C列的中文月份。首先看数字月份,在B12单元格输入公式=MONTH(--(A12&1)),向下填充。我在DE两列做了一个辅助,方便大家观看。D列是A12&1这部分,用A列的英文月份连接1。E列是--(A12&1)这部分,也就是对D列的结果做一个负负的数学运算,将其转为相应的日期。然后用month提取E列的月份。转换完毕。
可以看到excel可以识别英文的日期Jan1,并且通过数学运算将其转为对应的日期2020-1-1。中文月份的转换公式为在C12单元格输入公式=TEXT(A12&1,"[dbnum1]m月"),向下填充。text的第1参数会自动将英文日期转换为数字日期,然后用第2参数的格式代码返回它的中文月份。
如果文章对您有所帮助,请打赏一下,算是给我一些动力,要不然我很难持续写下去。哪怕帮点下在看或分享转发一下也好,这对我很有帮助。今天的入群二维码已更新,想入群交流学习的小伙伴可以扫码进群。
链接:
https://pan.baidu.com/s/1CrhffA76j3MaIdO5aX-aUQ
提取码:fb41
(0)

相关推荐