大家好,明天就是母亲节了,祝天下所有的妈妈身体健康,开心幸福!
为了应节
,本期我们来研究一下
母亲节
日期推算的问题,有不少粉丝反馈在写公式找不到思路,正好本期可以作为一次练习。
(纯探讨解题思路哈,希望函数高手们参与“
最后一种解法是什么逻辑
”的互动)
母亲节:5月第2个星期日
根据这个节日的定义,今年母亲节就是5月9日,如下图所示:
明年的母亲节就是5月8日:
本文的主题,就是带大家练习一下Excel的基本功,用
公式
来计算
某一年的母亲节日期
。
尝试笨办法
有时写公式没思路时,笨办法可能不是最高效的办法,但它肯定是可以帮助你梳理思路的!会用笨办法也是一项基本能力~
把所有可能的情况列举一下
5月第二个星期日
,所以母亲节最早就是5月8日,最晚是5月14日。为了方便研究,我把所有可能的星期几的分布情况,都列在下图中了:
大家可以
一列一列
地看上图,
7
代表着
星期日
,我把所有的星期日都标出来,方便大家看。直接计算第二个星期日,貌似没什么直接的办法。不妨先随便取一个日期做
参照
,因为我要算某年的母亲节日期,有个日期作为基准去推算会更方便,这里我们选5月1日,然后探寻一下母亲节和5月1日的关系。
首先试试穷举一下所有情况:
-
如果5月1日是星期 1,则母亲节是5月14日
(与5月1日隔了13天)
-
如果5月1日是星期 2,则母亲节是5月13日
(与5月1日隔了12天)
-
如果5月1日是星期 3,则母亲节是5月12日
(与5月1日隔了11天)
-
如果5月1日是星期 4,则母亲节是5月11日
(与5月1日隔了10天)
-
如果5月1日是星期 5,则母亲节是5月10日
(与5月1日隔了 9天)
-
如果5月1日是星期 6,则母亲节是5月 9日
(与5月1日隔了 8天)
-
如果5月1日是星期 7,则母亲节是5月 8日
(与5月1日隔了 7天)
可以看到,以上直接就把所有的情况都列完了,其实可以写个最笨的IF判断公式,就根据5月1日是星期几,然后就能得出母亲节所在的日期了。
1.先用公式算出来某年的
5月1日
是星期几
(以下公式以2021年为例)
F2
单元格 = WEEKDAY(DATE(
2021
,5,1),2)
-
然后再对
5月1日的星期数
即
F1
的值进行判断,即可得到:
2021年母亲节的日期 =
IF(F2=1,DATE(
2021
,5,14),
IF(F2=2,DATE(
2021
,5,13),
IF(F2=3,DATE(
2021
,5,12),
IF(F2=4,DATE(
2021
,5,11),
IF(F2=5,DATE(
2021
,5,10),
IF(F2=6,DATE(
2021
,5,9),
IF(F2=7,DATE(
2021
,5,8))))))))
虽然办法很笨,但是起码算出来了!
公式优化
这种穷举法的IF,其实可以用
choose
来简化,因为年月都是知道的,主要就是选择哪一天!所以就根据1号当天的星期数,去选择母亲节所在的天数即可:(F2 =
5月1日
的星期数)
=DATE(2021, 5, CHOOSE(
F2
, 14, 13, 12, 11, 10, 9, 8 ))
这样看起来,好像清爽多了!还有其他办法吗?
另一种方向
日期函数看似简单,但其中牵涉到很多技巧,在你设计报表时,如果想有丰富的日期维度,你应该会深有体会。
这里先讲一个技巧,因为一周是7天,如果用 7 减去某一天的星期数,就会得到所在周的剩余天数。例如今天5月8日是星期6,7 - 6 = 1 ,1 代表着最当周的最后一天(星期日)还差1天。
所以如果我用 7 - (5月1日的星期数) 就会得到5月1日离5月
第一个周日
的距离,例如2021年5月1日是星期6,我用 7 - 6 = 1 就知道5月第一个周日是 5月1日 + 1 即得到5月2日为第一个周日!
然后你只要用 5月2日 + 7 即能算到第二个周日的日期了!哈哈,是不是有点廓然开朗的感觉!
直接这个思路来写公式:5月1日 +