如下图所示的自动更新日期和星期的考勤表。
当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))
函数解析:1.DATE($J$1,$O$1,B$3)返回日期2021/5/1;
2.weekday返回代表一周中的第几天的数值
WEEKDAY(DATE($J$1,$O$1,B$3),2),此处weekday(“2021/5/1”,2)返回6,weekday函数的参数2代表以星期一为第一天,星期日为第7天。
3.当某一日期为周日时,weekday函数返回7,不符合我们的使用习惯,因此使用if函数。IF函数代表,当weekday函数返回值为7时,返回“日”,否则,返回weekday函数的值。
注意该公式中绝对引用和相对引用的使用。拖动B2单元格填充柄,将B2单元格公式复制到其他C2:AF2单元格。
第四步:设置中文小写
第三步中在B2:AF2设置公式返回的值为1、2、3、4、5、6、日。如何将其设置为一、二、三、四、五、六、日呢?
选中B2:AF2单元格区域,按Ctrl+1打开【设置单元格格式】对话框,设置为【中文小写数字】
第五步:设置条件格式
第一步中在B3:AF3输入1-31,但是有的月份并没有31天,可能为28天、29天、30天。也就是说,AD2:AF3并不需要每个月都显示,例如当月份为2月时,只需要显示B2:AC3单元格区域的星期和日期。
要想达到上述目的,可以在AD2:AF3设置条件格式。
选中AD2:AF3单元格区域,打开设置单元格格式对话框,选择【使用公式确定要设置格式的单元格】,输入公式 =AD$3>$AD$1,注意公式的相对引用。
点击【格式】,设置字体为白色。
当AD3:AF3单元格的值大于当月天数时,AD2:AF3单元格的字体设置为白色,这样就与表格背景色一致。
以上就是本教程的全部内容。你学会了吗?