找回密码
 注册
搜索
热搜: 回贴
微赢网络技术论坛 门户 办公系列 Excel 查看内容

现学现用,打造不固定节日查询系统

2009-12-13 19:11| 发布者: admin| 查看: 137| 评论: 0|原作者: 九天玄女

☆作者感言:看了贵刊今年第14期“聪明用电......


   作者感言:看了贵刊今年第14期“聪明用电脑”栏目中的“西游后记之Excel函数篇”后,感觉十分有用。我看到后面还设有擂台赛,学以致用,所以报名参加了(本文示例文件,可到http://www.newhua.com/cfan/200516/lts001.rar处下载)。赛题回放:有些节日日期不固定,比如每年母亲节定为五月份第二个星期天,但到底是五月几号就不固定了,请设计一种算法,快速计算出日期不固定的节日来。编辑点评:本文作者所设计的不固定节日查询系统有两个特色:一、界面友好,易于操作,界面元素安排清晰明了,文字提示也很体贴;二、内容丰富,除母亲节外,还包含了其他不固定节日的查询,甚至提供了一个中外节日一览表,内容非常全面。第一步:确定算法。首先算出母亲节(5月第2个星期日)的通用算法:假设有两个极端:一、假设5月1日就是星期日,由此可算出第二个星期日是8号;二、假设5月1日是星期一,则第二个星期日是14号。其他年份的母亲节都在8号与14号之间,正好7天。 日期函数小档案DATE语法:DATE(year,month,day)说明:year,年数,可以为1到4位数字;month,月份,如果输入的月份大于12,将从指定年份的1月份开始往上加,例如:DATE(2008,14,2)将返回代表2009年2月2日的序列号;day,日期,代表在该月份中第几天的数字。WEEKDAY语法:WEEKDAY(serial_number,return_type)说明:返回某日期为星期几。默认情况下,其值为1(星期日)到7(星期六)之间的整数。serial_number,代表要查找的那一天的日期; return_type,确定返回值类型的数字。代表返回值如下表所示:1或省略数字1(星期日)到数字 7(星期六),同 Microsoft Excel 早期版本2数字1(星期一)到数字 7(星期日)3数字0(星期一)到数字 6(星期日)。本例中,将选择2以对应从1~7表示星期一至星期日。 我们可以用上期介绍的几个函数进行计算:=IF(WEEKDAY(DATE(F6,5,8),2)=7,DATE(F6,5,8),IF(WEEKDAY(DATE(F6,5,9),2)=7,DATE(F6,5,9),IF(WEEKDAY(DATE(F6,5,10),2)=7,DATE(F6,5,10),IF(WEEKDAY(DATE(F6,5,11),2)=7,DATE(F6,5,11),IF(WEEKDAY(DATE(F6,5,12),2)=7,DATE(F6,5,12),IF(WEEKDAY(DATE(F6,5,13),2)=7,DATE(F6,5,13),""))))))其中使用的是IF函数嵌套,WEEKDAY(DATE(F6,5,8),2)=7,DATE(F6,5,8)语句表示取F6单元格中的年份,加上5月8日这天,然后用WEEKDAY函数判断是否为星期天,如果是星期天就用DATE(F6,5,8)在相应的单元格内显示当天即是节日。其余的嵌套语句类似,用以连续判断从8日到14日是否为星期天。第二步:具体实现。打开一个新的工作表,在E6单元格内先输入“请输入要查询的年份”,在F6单元格内输入查询年份,如“2005”,在H6单元格内输入“例:2005年请输入:2005(并按回车)”以提示用户输入格式。在C10单元格内输入提示文字:“母亲节”,然后在E10单元格内输入第一步中设计的代码(见图)。 理论上可以使用七层嵌套,但笔者使用后却发现提示错误,所以利用两个单元格共同显示结果,分别在E10单元格中显示8日至13日结果,而在F10单元格中输入“=IF(WEEKDAY(DATE(F6,5,14),2)=7,DATE(F6,5,14), "")”以显示当14日是星期日时的结果,之所以在IF函数第三个参数中用双引号,是为了避免其显示成“FALSE”。最后把E10、F10单元格的格式修改成“日期”格式即可。现在我们在F6单元格内输入一个年份,比如“2005”,就能在E10(或者F10)单元格中提示当年的母亲节日期为“2005年5月8日”。再输入其他年份检验一下正确性。至此,就完成了不定期节日的计算。第三步:美化界面。我们可以按照以上方法在相应的单元格内输入其他节日的查询,并在节日后输入相应的提示。大家可下载本文的示例文件,以作参考。快动手吧,现学现用,用技术提高工作效率!

最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 19:23 , Processed in 0.249297 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部