一个Excel公式就能制作万年历,用到退休

一个公式制作如图所示的简易万年历,更改年份和月份自动更新 。

一个Excel公式就能制作万年历,用到退休

简易万年历

获取当月第1天

DATE引用指定的年份和月份,获取该月份的第1天:
=DATE(D2,E2,1)
一个Excel公式就能制作万年历,用到退休

获取当月第1天

获取当月第1周的星期一

由于周一到周日的排列方式,D4单元格的内容是:当月第1周星期一的日期 。
2023/7/1是当月第1周的星期六,D4单元格的日期是2023/7/1减去5天 。由此总结:
当月1日是星期一,当月第1周的星期一等于当月1日减0天;
当月1日是星期二,当月第1周的星期一等于当月1日减1天;
当月1日是星期三,当月第1周的星期一等于当月1日减2天;
……
当月第1周的星期一 = 当月1日 – (当月1日的星期数-1)
上一步中已经获取了当月1日:
=DATE(D2,E2,1)
(当月1日的星期数-1):
=WEEKDAY(DATE(D2,E2,1),3)
WEEKDAY的作用是返回日期的星期数,第二参数设置为3表示“从0(星期一)到6(星期天)的数字”,如:2023/7/1是星期六,则返回数字5.
两者相减:
=DATE(D2,E2,1)-WEEKDAY(DATE(D2,E2,1),3)
一个Excel公式就能制作万年历,用到退休

当月第1周的星期一

递增队列

=SEQUENCE(6,7,0)
SEQUENCE产生一个6行7列,起始数为0,以1递增的数字队列 。
一个Excel公式就能制作万年历,用到退休

数字队列

日期的递增队列

把上2步的首个日期和队列相加,即得到42个连续的日期队列:
=DATE(D2,E2,1)-WEEKDAY(DATE(D2,E2,1),3) SEQUENCE(6,7,0)
一个Excel公式就能制作万年历,用到退休

日期的递增队列

弱化显示非当月日期

单元格月份不等于指定月份,则执行条件格式,用浅灰色将其弱化显示:
=MONTH(D4)<>$E$2
一个Excel公式就能制作万年历,用到退休

【一个Excel公式就能制作万年历,用到退休】条件格式设置

相关经验推荐