078学习制作动态日历
图1动态日历
日期和时间函数已经学完了,今天和我一起学习制作动态日历吧。
1)如图所示,是我设计的样子,从上到下分为3个区域,日期区、星期区、日历区。新建一个工作簿,设置好三个区域的宽度、背景填充、框线,字体格式、颜色、大小随时可以设置。
2)将A1:E1区域合并后居中,输入“=now()”,F1输入“星期”,G1输入“=weekday(today(),2)”,用数字1~7代表星期一~星期日。
3)A2~G2依次填入星期,想用英文的可以填英文,洋气一点。
4)我用到了两个中间变量,分别命名为“星期”和“月底”,其实不用也完全可以,但是公式就比较长,调试起来稍微麻烦一点。
图2 星期
5)我们学过的eomonth函数可以返回某个月份的最后一天的序列号,所以我们可以用上个月份的最后一天再加上1天就定位到本月的第1天的序列号了,再使用weekday函数便可以算出本月第一天是星期几了,将这个单元格(本例是H3)命名为“星期”。
图3 月底
6)还是使用eomonth函数,两个参数分别是“today()”和“0”,得到本月最后一天的序列号,作为day函数的参数,将日子提取出来,将单元格命名为“月底”。
图4 填充序列
7)下面填充日历区域,方法有很多,这里采用查找和引用函数里面的column和row,分别返回引用的列号和行号。公式向右填充时列号逐一增加,向下填充时行号逐一增加,利用这个关系可以推导出公式,A1的行号和列号均为1,每行递增1个星期的7天。在A3中输入图中公式,然后向右填充至G3,再向下填充到G8,显示一堆#号,将格式设置为“常规”即可。
图5 把本月1号放在正确星期位置
8)现在我们要把本月的1号移到查询所得星期数的位置,选择A3,在编辑栏的公式后面接着输入“-星期”(不用中间变量的话,直接将图2中的公式放在这个位置即可),然后按照7)中的步骤填充A3:G8区域。
9)现在要将超出日历范围的数值隐藏起来,并突出显示今天的位置,选取A3:G8区域,一共建立3条条件格式,次序随便。
图6 条件格式
- 选择“开始”选项卡、“条件格式”、“突出显示单元格规则”、“小于”,输入框中输入“1”,“设置为”中选择最下面的“自定义格式”,在“设置单元格格式”对话框中选择“自定义”,在类型中输入“;;;”后一直确定,小于1的看不见了。
- 选择“开始”选项卡、“条件格式”、“突出显示单元格规则”、“大于”,输入框中输入“=月底”(不用中间变量的话,直接将图3中的公式放在这个位置即可),“设置为”中选择最下面的“自定义格式”,在“设置单元格格式”对话框中选择“自定义”,在类型中输入“;;;”后一直确定,大于月底的看不见了。
- 选择“开始”选项卡、“条件格式”、“突出显示单元格规则”、“等于”,输入框中输入“=day(today())”后确定。
10)最后一步,把周、六日的文本设成红色,把中间变量单元格的列隐藏起来,就完成了。试着更改计算机中的电脑日期,回到工作表按F9重新计算,找个日历对一对看看怎么样。找个闰月的试试看。
图 7 2020年2月是润月
(待续)