利用excel制作一个十二星座的万年历
揭去2015年最后一页日历,20015年踏着轻快的脚步靠近了我们。每到新的一年,必须要做的一件事就是更换办公桌上的旧台历,年复一年,是不是觉得麻烦?今天,让我们通过Excel打造一款万年历,不但可以随时翻看1900——2100之间任何一年的日期,还配有十二星座图案,非常漂亮。
一、定制日历的框架
第一步:运行Excel 2003,将“Sheet1”工作表改名为“万年历”。按Ctrl+A组合键将整个工作表选中,然后执行“格式→列→列宽”命令,在弹出的对话框中输入“2.4”,单击“确定”按钮将整个工作表的列宽调整为2.4。
第二步:选中R5——X6单元格,右击选中的区域,在右键菜单中选择“设置单元格格式”命令,再在单元格格式对话框的“对齐”选项卡中选中“合并单元格”项将所选单元格合并。等万年历最终制作完成后,只要在这里输入要生成日历的年份,按回车键就可以自动生成该年份十二个月的日历了。
小提示
通过下拉列表选择年份
在R5单元格中,除了手工输入外,我们还可以设置一个下拉列表供使用者选择:选中BD1单元格(选择BD列主要是为了不让该列数字显示在主界面上,影响美观)并输入“1900”,选中BD2单元格并输入“1901”,同时选中这两个单元格后拖动右下角的“填充柄”以序列方式填充下面的单元格至数字2100;点击选中刚才合并的R5单元格,执行“数据→有效性”命令,在“数据有效性”对话框中的“允许”下拉菜单中选择“序列”,在“来源”栏中输入公式“=$BD$1:$BD$201”(见图1),点击“确定”按钮,此时,只要选中R5单元格,其右侧就会出现一个小按钮,点击它即可在下拉列表中选择年份了(1900年——2100年)。
图1
第三步:选中F11——L11单元格,将其合并,输入“January”(一月),将其居中并设置适当的字体及大小;然后依次在F12——L12单元格中输入星期的英文缩写(如:Sun、Mon、Tue等,你也可以用中文的“日”、“一”、“二”来代替);接下来点击“插入→图片→来自文件”命令,插入事先准备好的十二星座图片(可从本文提供的下载包中获得),调整第10行的行高使其与图片的高度一致。最终生成的万年历,在星期的下方会自动生成日期,所以这里我们为日期预留6行的空格。按同样的方法可以制作出其余11个月的日历,如图2所示。
图2
二、给日历穿上美丽外衣
下面我们对刚刚制作好的日历进行进一步的美化。
第一步:执行“格式→工作表→背景”命令,在对话框中选择准备好的背景图片(本文的素材包中有提供),为工作表添加一个背景。
第二步:选中E9——AK37单元格区域,右击选中的区域,从右键菜单中选择“设置单元格格式”命令。在打开的单元格格式对话框的“图案”选项卡中,设置“单元格底纹”为白色;在“边框”选项卡中为此单元格区域设置一个“淡蓝”色的粗实线边框。
第三步:选中A列、B列、AN——AZ列、第1行、2行及第41——50行(按Ctrl键可以复选),将“单元格底纹”设置为白色,这样设置的目的是为了突出显示日历的主体部分,为了美观,我们可再为C3——AM40单元格区域添加一个黑色的细实线边框。
第四步:选中每月星期六、星期日及其下方对应的6行单元格,右击调出单元格格式对话框,在“字体”选项卡中将字体颜色设置为红色。然后,分别设置年份及月份名称的字体颜色、字体样式、字号。
第五步:年份(R5)单元格显得有些单调,我们为它添加一个边框装饰一下。分别选中O4——AA7及L5——AD6单元格区域,为这两个区域各添加一个彩色的双线边框,添加完成后调整一下4行及7行的高度,这样可使边框看起来更加美观。
第六步:单击“工具→选项”命令,在选项对话框的“视图”选项卡中,单击取消对“网格线”项的选项,这样可隐藏工作表中的网格线。至此,本例万年历的界面就设计完成了(见图3)。
图3
三、制作万年历
前面我们已经给日历披上了漂亮的外衣,接下来要为它填充实际的内容,让它能晓过去、知未来,成为一个真正的万年历。
如果我们知道了某年某月的1日是星期几,那么在Excel中自动排列那个月的日期就非常容易了:只要用前面的单元格加1就可以按顺序排列日期序列了,也就是说,只要我们解决了自动识别每月1日是星期几,再结合大月、小月及闰年的识别,就可以实现任意年份日历按月自动排列的功能了。下面简单介绍一下这种方法的思路。
第一步:
选中F13单元格,输入公式“=IF(WEEKDAY(DATE($R$5,1,1),2)=7,1,"")”(不含最外层的引号,下同)。上面公式的含义是:假如“R5”单元格中输入的年份1月1日是星期天,则在F13单元格中显示“1”,否则什么都不显示。
第二步:
选中G13单元格,输入公式“=IF(F13<>"",F13+1,IF(WEEKDAY(DATE($R$5,1,1),2)=1,1,""))”,这个公式的含义是:如果F13单元格不为空,则执行F13单元格中的数字加1,否则再进行“R5”单元格中输入年份的1月1日是否是星期一的判断。
第三步:
拖动G13单元格的“填充柄”复制公式到H13——L13单元格中,分别选中H13——L13单元格,手动调整每个单元格中“WEEKDAY”函数的判别值,即等号右边的数字,依次改成2、3、4、5、6,使其与星期相对应。
第四步:
选中F14单元格(即一月份第二个星期相对应的单元格),输入公式“=L13+1”(L13为上一行中的最后一个单元格),在G14单元格输入公式“=F14+1”,然后,拖动“填充柄”填充H14——L14单元格即可。以同样的方法,在下面的4行中输入对应的公式,不过一定要注意换行时单元格的引用。
第五步:
重复上述操作,分别设置后面11个月份的日期序列,在设置时需注意,在对每个月1日是星期几的识别公式中,将“DATE”函数中的月份值与实际的月份值相对应,如:设置2月份日历时,“DATE”函数的表达式应是“=DATE($R$5,2,1)”。
限于篇幅,上面还只是一个简单的介绍,还没有解决大、小月、闰月、日期出现大于“31”的现象等。具体设置,大家可参考本文所提供下载包中的“万年历.xls”文件。另外,这样一行一行地复制公式,方法比较烦琐,大家还可以参考下载包中的“yearly_calendar.xls”文件,学习一下如何通过Excel高级功能,完全实现自动日历更新的,不过这需要对Excel有更深入的了解。