如下图所示的自动更新日期和星期的考勤表。
当O1单元格的月份更新时,AD1单元格的当月天数自动更新,B2:AF3的日期和星期也自动更新。当月份为2月时,B3:AF3只显示到第28天,当月份为4月时,B2:AF3显示到第30天,当月份为5时,B2:AF3显示到第31天。
要制作这种动态更新日期和星期的考勤表,需要用的函数有Date函数、Weekday函数、Day函数、IF函数。还需要用到条件格式。
第一步:制作如下图所示的表格
在J1单元格输入2021,选中J1:M1设置单元格对齐方式为跨列居中;在AA1单元格输入文本“当月天数”,选中AA1:AC1设置单元格对齐方式为跨列居中。在B3:AF3输入数字1-31代表5月份的1号至31号。
第二步:设置自动更新的当月天数
在单元格AD1输入公式:=day(date(J1,O1 1,1)-1)
公式解析:1.date函数返回一个日期,语法为date(year,month,day)。本例中J1=2021,O1=5,date(J1,O1 1,1)返回2021/6/1。日期本质是一个连续的数值,date(J1,O1 1,1)-1指的是返回2020/6/1前一天的日期,即2021/5/31。
2.Day函数返回一个月中的第几天的数值,Day(2021/5/31)返31,代表的是5月的第31天。
一个月份可能有31天、30天、29天、28天,那么如何确定某月的最后一天究竟是多少号呢?可行的方法是用下个月1号减1就是该月最后一天的日期,再用Day函数即可确定该月的的天数。
第三步:设置自动更新的星期
在B2单元格输入公式:=IF(WEEKDAY(DATE($J$1,$O$1,B$3),2)=7,"日",WEEKDAY(DATE($J$1,$O$1,B$3),2))