历是一种日常使用的出版物,用于记载时间。每页显示一日的叫日历,每页显示一个月的叫月历,每页显示全年的叫年历。万年历是我国古代传说中最古老的一部太阳历。为纪念历法编撰者万年功绩,便将这部历法命名为“万年历”。而现在所使用的万年历,实际上就是记录一定时间范围内的具体阳历或阴历的日期的年历,方便有需要的人查询使用,与原始历法并无直接联系。
ET 2009是一个表格设计软件,其内置的函数具有强大的运算功能,利用函数设计万年历非常方便、快捷。本篇教导大家利用在最短的时间内设计一个强大的万年历。Let’s Go!
设计万年历前,先罗列出万年历的具体要求:A:可以计算1900到9999年之间的所有日历;B:可以方便地切换时间,即以任意查找任意年、月的日历;C:仅仅使用ET的内部函数完成,不用VBA及引用外部数据
操作步骤如下:1.在A1单元格(也可以是其它单元格)随意输入一个日期,例如2009-11-9;2.选择A1:G1区域,然后单击工具栏中的“合并单元格”,使该区域合并居中显示;3.选择A2:G2,输入以下数组公式:={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"}也可以改用汉字:={"周日","周一","周二","周三","周四","周五","周六"}4.选择A3:G8,并输入以下数组公式:=IF(MONTH(A1)<>MONTH(DATE(YEAR(A1),MONTH(A1),1)-(WEEKDAY(DATE(YEAR(A1),MONTH(A1),1))-1)+{0;1;2;3;4;5}*7+{0,1,2,3,4,5,6}),"",DAY(DATE(YEAR(A1),MONTH(A1),1)-(WEEKDAY(DATE(YEAR(A1),MONTH(A1),1))-1)+{0;1;2;3;4;5}*7+{0,1,2,3,4,5,6}))5.为了让标题与日历加以区分,对A1:G1、A3:G2和A3:G9三个区域设置不同背景色及字体。其中字体、背景色可以根据个人喜欢设置。大致效果如下:图1 日历6.修改A1的值为1998年6月1日,可以发现日历将相应地更新,见下图:图2 更新日历7.前面通过公式产生万年历,公式显得相当烦琐。如果配合条件格式,公式可以简单很多。原公式修改如下:=VALUE(TEXT(A1-DAY(A1)-MOD(A1-DAY(A1),7)+{0;1;2;3;4;5}*7+{1,2,3,4,5,6,7},"d")) 当修改为此公式后,其结果如下:图3 精简公式后的日历8.在上图中,显示了与当月无关的一些日期。为了消除它,可以利用条件格式来完成。选择A3:G3区域,然后打开条件格式对话框,设置为小于10的值就字体颜色显示为背景色,设置界面如下:图4 让大于10者显示为背景色与字体色相同9.再选择A7:G8区域,同样方式设置条件格式为小于15者显示为背景色与字体色相同。最后产生的日历效果将与图2一致。10.如果感觉修改A1不太方便,可以利用窗体来滚动式编辑年与月。即在工作表中插入一个微调项,再按图5方式设置其“控制“属性。以同样方式再添加一个微调项窗体控件,并将其最小值设为1,最大值设为12,单元格链接为“$G$1”。图5 设置微调项的属性11.修改A1的值为以下公式:=H1&"年"&I1&"月1日"通过以上设置后,鼠标单击微调项就可以控制日历的显示年月了。如果还需要更简单、更方便,通常只能改用VBA来实现了。在我的VBA教材连载中有提到,各位可以去阅读,了解VBA的思路。