|
题目是最基本的日期函数应用,20题全做出来(其实是19题,将错就错吧 ),常用日期函数应该都了解的差不多了。
答案只是简单说了下函数作用,并没详细讲解各个函数,详细了解请看帮助文件。
=================================================================================================
没想到帖子被置顶了写这个帖子主要是自己对日期函数挺模糊的 。后来发现也不是很复杂。主要是没接触。
其实日期就是一组自然数,星期就是MOD(日期,7)形成的0-6的循环数。星期出来了,工作日,休息日也就出来了。
=================================================================================================
WEEKDAY,WEEKNUM,WORKDAY,NETWORKDAYS,YEARFRAC,EDATE,EOMONTH等都是03版的分析库函数,需要加载。
07,10可直接用。
=================================================================================================
1-5题答案全一致。1-4题好像没其他办法,【NOW()可以】,第5题用MOD,WEEKDAY也能解,但绕了一个大圈。
1=TODAY()TODAY取系统日期
2=YEAR(TODAY())YEAR取日期年份
3=MONTH(TODAY())MONTH取日期月份
4=DAY(TODAY())DAY取日期天数
5=WEEKNUM(TODAY())WEEKNUM取日期在所在年份的周数,1月1日为第一周
=================================================================================================
题目漏了WEEKDAY返回日期为星期几WEEKDAY(日期,2)符合中国习惯。
漏了NOW()返回系统日期加时间。NOW()-TODAY()就是系统时间了
还有EDATE,EDATE(“2011-3-24”,1)=2011-4-24,即日期延后(负数往前)月份对应日期。
注意一点就是EDTE(“2011-3-31”,1)=2011-4-30 EDATE("2011-3-30",-1)=2011-2-28
EOMONTH EOMONTH(“2011-3-24”,1)=2011-4-30,即3月后一月(4月)的最后一天日期
=================================================================================================
6=WORKDAY(TODAY(),1)返回在日期之前或之后、与该日期相隔指定工作日的某一日期的日期值
WORKDAY应该是该题的最简单答案。
不用日期函数也可以,通过MOD(TODAY(),7)值判断,0-4就+1,5就+3,6就+2
如大理版主的=MIN(IF(MOD(TODAY()+{1,2,3},7)>1,TODAY()+{1,2,3}))
=================================================================================================
7=SUM(DATE(YEAR(TODAY())+{1,0},1,1)*{1,-1})【8,18题同7题】
大理版主解法最简单,判断润平年。
=365+COUNT(-"2-29")
==================================================================================================
当年有几天?这题公式:
="12-31"-"1-1"+1
这个公式应该是最简短的.
===wshcw===
==================================================================================================
其中-"2-29"在不同语言系统中有问题,全写-"2011-2-29"还没发现问题
主要想体现DATE函数的应用。DATE返回指定年月日的日期序列号
DATE(2011,3,8)返回的是2011年3月8日日期的序列号40610。
DATE参数有个"进位借位"特点。如
DATE(2011,3,0)返回的是2011-2-28,配合DAY可以取得月份的天数。
DATE(2011,7+6,1)返回2011-7-1半年后的日期。
=================================================================================================
9=IF(MONTH(DATE(YEAR(TODAY()),2,29))=2,"是","否")
通过判断2-29是否存在,也是DATE函数的应用。
COUNT(-"2-29")还是最简单的。现在有个问题--“2011-2-29”是不是所有系统都认。
也可以通过if判断4年一润,百年400年一润判断。
=================================================================================================
10,11,12本想如用DATEDIF函数解出错,现在成全对了。
DATEDIF函数是隐藏函数,微软隐藏它大概不是因为它多厉害,相反是因为它BUG太多的原因。
具体看chrisfang版主的分析
http://club.excelhome.net/viewth ... ight=DATEDIF&page=1
12=INT(YEARFRAC(--LEFT(A13,9),TODAY(),1))
13=NETWORKDAYS(DATE(YEAR(TODAY()),MONTH(TODAY()),1),DATE(YEAR(TODAY()),MONTH(TODAY())+1,0)) 【14原理同13】
套了两个DATE,公式较长。NETWORKDAYS返回两日期之间完整的工作日数值。不包括周末,第三参数可指定假期
也可用MOD解
大理版主的=COUNT(0/(MOD(MONTH(NOW())&-ROW(1:31),7)>1))
=================================================================================================
15=WEEKNUM(DATE(YEAR(NOW()),MONTH(NOW())+1,0))-WEEKNUM(DATE(YEAR(NOW()),MONTH(NOW()),1))+1
取月的最后一天和第一天所在周,相减+1就是结果。相当于5到9有几个数,9-5+1=5
=================================================================================================
16=COUNT(0/(MOD(MONTH(NOW())&-ROW(1:31),7)=6))
通过MOD判断。一月第一天到最后一天形成的序列除以7,余数是6的就是周五,计算个数
=================================================================================================
17="2011-5-1"-WEEKDAY("2011-5-1",2)+14
判断5-1前一个周日日期,加14即为5月的第二个周日。
=CEILING("4-30",7)+8同理,判断4-30后的第一个周6所在日期,加8即第二个周日。
=================================================================================================
19=TEXT(MATCH("1-1",TEXT(NOW()+ROW($1:$385)-1,"[$-130000]m-d"),)-1,"离春节还有0天;;今天就是春节") 【适用日期范围至农历2026年春节止】
核心是通过TEXT(日期,"[$-130000]-m-d")将日期转成农历日期【07(含)以后的版本才能用】。
据验证[$-130000]参数有问题,不是很准。
大理版主再次验证19题。
===============================================================================
闰正月和闰十二月根本就不存在。
===wshcw===
===============================================================================
[ 本帖最后由 wshcw 于 2011-4-9 11:52 编辑 ] |
评分
-
6
查看全部评分
-
|