一个公式制作如图所示的简易万年历,指定年份和月份自动更新。
注意: 里面用到了office365公式, 不支持低版本
获取当月第1天
DATE引用指定的年份和月份,获取该月份的第1天:
=DATE(D2,E2,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)
递增队列
=SEQUENCE(6,7,0)
日期的递增队列
把上2步的首个日期和队列相加,即得到42个连续的日期队列:
=DATE(D2,E2,1)-WEEKDAY(DATE(D2,E2,1),3)+SEQUENCE(6,7,0)
弱化显示非本月日期
条件格式中用公式判断:单元格月份不等于指定月份,则执行条件格式,用浅灰色将其弱化显示:
=MONTH(D4)<>$E$2
联系客服