如下图所示的自动更新日期和星期的考勤表。
当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单元格的字体设置为白色,这样就与表格背景色一致。
以上就是本教程的全部内容。你学会了吗?