c语言母亲节算法,用Excel推算母亲节日期,能理解最后一种算法的是高手!

原标题:用Excel推算母亲节日期,能理解最后一种算法的是高手!

大家好,今天是母亲节,先祝符合条件的朋友们节日快乐~~

我们今天来研究一下母亲节日期的计算方法,先来看母亲节的定义:

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

那么用Excel怎么去计算出来具体哪一个日期是母亲节呢?(在C2单元格可修改年份数)

a4fa33749eff2f3ad9f9f076a22330c0.png

研究一个问题写公式时,我们如果有经验,或者很快有思路的时候,可以直接开始尝试写公式。但是当我们没有思路的时候,可以怎么办呢?

先用最笨的办法,把所有可能的情况列举一下

例如,可以列举5月1日-5月14日(为什么是14天?)可能的星期分布情况,如下所示

c860317024f9936f3b8976e31cf9aee1.png

在上图中,我也把所有的星期日,都填充标示出来了,可以看到无论是什么年份,母亲节日期的范围一定会落在5月8日-5月14日的某一天里!

那怎么才能根据年份的不同,去计算出来具体的日期呢?

年份不同,其实主要就是会影响到星期几的变化!

所以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天)

把所有的情况都列出来之后,所以最笨的公式就出炉了:

先用公式算出来当年的5月1日是星期几(C2单元格是年份数),然后把值放在F2单元格,所以F2的公式就是

=WEEKDAY(DATE(C2,5,1),2)

然后再到D5单元格中对F1的值进行判断即可得到母亲节的具体日期

=IF(F2=1,DATE(C2,5,14),

IF(F2=2,DATE(C2,5,13),

IF(F2=3,DATE(C2,5,12),

IF(F2=4,DATE(C2,5,11),

IF(F2=5,DATE(C2,5,10),

IF(F2=6,DATE(C2,5,9),

IF(F2=7,DATE(C2,5,8))))))))

虽然办法有点笨,但这样是每个人都能想到的解决方法!

若你懂的函数比较多,你可以用choose来选择具体的日期,因为年月都可以不变,然后具体的天是就在8-14号去选择(根据F2算出五月一日的星期数):

=DATE(C2,5,CHOOSE(F2,14,13,12,11,10,9,8))

那我们再想想办法,看看还有没有其他办法!

既然母亲节是在5月8日-14日之间产生,即母亲节日期起码要在5月1日的基础上加上7,这样才得到5月8日;再分析一下其他间隔天数的规律,加完7后,还需要再加上:周总天数 7 - 五月一日的星期数,即可得到公式:

=DATE(C2,5,1)+7+(7-F2)

优化1:

=DATE(C2,5,1)+14-F2

优化2:

=DATE(C2,5,15)-F2)

当然你不需要辅助单元格F2的时候,可以直接写:

=DATE(C2,5,15)-WEEKDAY(DATE(C2,5,1),2))

意思就是只要用5月的第15天减去五月一日的星期数就ok了(直接理解的话,有点不太好理解了~)

再推出一个终极的,最深奥的算法,但写起来超简单~

=FLOOR(DATE(C2,5,6),7)+8

用FLOOR函数找到5月的第一个星期六,然后加上8就是第二个星期天了。(就是FLOOR函数的理解要费点劲~)

以上介绍了三种算法,都可以选用,无论你是用哪一种算法,都能做好一个母亲节具体日期查询了:

80e70e843f2bbc60e7705be0ae6220b7.gif

好,母亲节的日期推算就做完了,大家可以试试父亲节的日期怎么计算,评论告诉我~

最后,总结一下本文的思路,希望能对大家处理实际问题时有帮助~

没有思路时,不妨从最笨的办法开始(起码不要停滞不前)

知识积累得越多,能想到的方法就越多(注重知识的积累)

还有当然我们要善用搜索,因为你目前面临的问题,也许已有前人遇到过,并且有解决方案,你找到了就直接套用即可!

当然建议你还是要学会理解别人的方法,只有经过深度思考、理解的内容,才能真正被你吸收,才能更好地举一反三!

加入黄成明老师的《数说》栏目,为自己积累更多实用的数据分析知识,让自己提升思维,提升技能!目前已有3100+会员在学习,赶紧加入学习吧~

戳开【数据分析,精英人士必学的能力】看线上课程《数说》的介绍~返回搜狐,查看更多

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值