我们党执政兴国:利用数据有效性规范日期输入

来源:百度文库 编辑:偶看新闻 时间:2024/05/06 20:02:45
利用数据有效性规范日期输入2010-09-06 10:55

       前面介绍了使用日期控件输入日期的方法,如果碰巧电脑上没有日期控件,这时还可以用EXCEL的“数据有效性”来输入日期。
如下面图片中,需要在B2、D2、F2单元格中分别输入“年”、“月”、“日”,并且“年”的范围限定在2005年至2015年,同时还要考虑2月份的最大日数是28或29,小月的最大日数是30日。

        在K2至K12单元格中依次输入从2005至2015;在L2至L13单元格中依次输入1至12;在M2至M32单元格中依次输入1至31.
        

下面来设置“有效性”规则:
1、选中B2单元格,按“数据-有效性”,在弹出的有效性对话框中选择“设置”选项卡,在其中的“允许”中选择“序列”,这时在下面会出现“来源”输入框,在里面输入公式 =$K$2:$K$12 ,然后按确定退出。
2、选中D2单元格,按上面方法操作,在“来源”框中输入公式 =$L$2:$L$13
3、选中F2单元格,按上面方法操作,在“来源”框中输入公式 =INDIRECT("$M$2:$M$"&DAY(DATE($B$2,$D$2+1,1)-1)+1)



       这个第三步的作用利用INDIRECT函数及两个日期函数来达到根据月份值确定最大日数。其中 DATE($B$2,$D$2+1,1)的作用是得到D2月份的后一个月的第一天,比如B2格是2010,表示2010年,D2格是4,表示4月份,那么这个公式的结果就是2010年5月1日。


       让这个“2010年5月1日”减去1天后即 DATE($B$2,$D$2+1,1)-1 就是4月份的最后一天。再通过DAY函数来得到这个4月份最后一天的日数,即30 日。这时,这个公式就变成了 =INDIRECT("$M$2:$M$"&30+1)


       通过INDIRECT函数,把这个表示地址的字符串变成真正的引用地址:M2:M31
       我们从M列中看到,M31单元格的值是30,此时通过“有效性”,F2的可选序列范围就是1至30了。     同理,如果是2月份,通过“有效性”,F2的可选序列范围是1-29或1-28(这要看是闰年或平年了)。

       输入日期时,如果依次输入“年”、“月”、“日”,是不会出现错误的,但有一个特殊情况,如果先输入“日”,再输入“月”,就可能出现一个错误的日期。比如先输入了3月31日,然后又将3月改成4月,此时日期就成了4月31日,显然没有这个日期,所以为了避免这种情况,需要在H2单元格输入一个判断日期是否正确的公式 =IF(F2<>DAY(DATE(B2,D2,F2)),"日期错误","")


如果日期不对,就会在H2单元格中显示文字“日期错误”,提示你需要重新输入日期