专栏名称: 数据化管理
提供数据分析的咨询和培训服务,以及数据分析产品销售
目录
相关文章推荐
FM1007福建交通广播  ·  宇树科技携两款机器人亮相2025GDC ·  7 小时前  
FM1007福建交通广播  ·  宇树科技携两款机器人亮相2025GDC ·  7 小时前  
中国航务周刊  ·  三大航运巨头MSC、马士基、达飞,抢占这一重 ... ·  2 天前  
中国航务周刊  ·  MSC两条远洋干线,在大连港首航! ·  3 天前  
中国航务周刊  ·  【展商推介】星亚航运,邀您莅临“2025国际 ... ·  4 天前  
中国航务周刊  ·  中远海控首制,国内首艘! ·  3 天前  
51好读  ›  专栏  ›  数据化管理

母亲节,我想用Excel写个公式,但苦于没思路...

数据化管理  · 公众号  ·  · 2021-05-08 18:46

正文

大家好,明天就是母亲节了,祝天下所有的妈妈身体健康,开心幸福!

为了应节 ,本期我们来研究一下 母亲节 日期推算的问题,有不少粉丝反馈在写公式找不到思路,正好本期可以作为一次练习。 (纯探讨解题思路哈,希望函数高手们参与“ 最后一种解法是什么逻辑 ”的互动)

母亲节:5月第2个星期日

根据这个节日的定义,今年母亲节就是5月9日,如下图所示:

明年的母亲节就是5月8日:

本文的主题,就是带大家练习一下Excel的基本功,用 公式 来计算 某一年的母亲节日期

尝试笨办法

有时写公式没思路时,笨办法可能不是最高效的办法,但它肯定是可以帮助你梳理思路的!会用笨办法也是一项基本能力~

把所有可能的情况列举一下

5月第二个星期日 ,所以母亲节最早就是5月8日,最晚是5月14日。为了方便研究,我把所有可能的星期几的分布情况,都列在下图中了:

大家可以 一列一列 地看上图, 7 代表着 星期日 ,我把所有的星期日都标出来,方便大家看。直接计算第二个星期日,貌似没什么直接的办法。不妨先随便取一个日期做 参照 ,因为我要算某年的母亲节日期,有个日期作为基准去推算会更方便,这里我们选5月1日,然后探寻一下母亲节和5月1日的关系。

首先试试穷举一下所有情况:

  1. 如果5月1日是星期 1,则母亲节是5月14日 (与5月1日隔了13天)

  2. 如果5月1日是星期 2,则母亲节是5月13日 (与5月1日隔了12天)

  3. 如果5月1日是星期 3,则母亲节是5月12日 (与5月1日隔了11天)

  4. 如果5月1日是星期 4,则母亲节是5月11日 (与5月1日隔了10天)

  5. 如果5月1日是星期 5,则母亲节是5月10日 (与5月1日隔了 9天)

  6. 如果5月1日是星期 6,则母亲节是5月 9日 (与5月1日隔了 8天)

  7. 如果5月1日是星期 7,则母亲节是5月 8日 (与5月1日隔了 7天)

可以看到,以上直接就把所有的情况都列完了,其实可以写个最笨的IF判断公式,就根据5月1日是星期几,然后就能得出母亲节所在的日期了。

1.先用公式算出来某年的 5月1日 是星期几 (以下公式以2021年为例)

F2 单元格 = WEEKDAY(DATE( 2021 ,5,1),2)

  1. 然后再对 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日 +







请到「今天看啥」查看全文