ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 30596|回复: 121

常用的日期函数20问

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-3-23 08:26 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
题目是最基本的日期函数应用,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 编辑 ]

日期函数题.rar

3.71 KB, 下载次数: 1853

评分

6

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-3-23 08:37 | 显示全部楼层
下载做做试试,呵呵……

TA的精华主题

TA的得分主题

发表于 2011-3-23 08:47 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-3-23 08:55 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我也来试试 哈哈

TA的精华主题

TA的得分主题

发表于 2011-3-23 09:02 | 显示全部楼层
晚上回家试试 大体看了看 第20题我是做不出来的
做了17题 不知对不对

[ 本帖最后由 ykqrs 于 2011-3-23 10:46 编辑 ]

日期函数题.rar

4.4 KB, 下载次数: 175

TA的精华主题

TA的得分主题

发表于 2011-3-23 09:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
坐等高人支招中........

TA的精华主题

TA的得分主题

发表于 2011-3-23 09:05 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-3-23 09:08 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-3-23 09:34 | 显示全部楼层
做了一下,做得不好请指正(最后算到春节还差几天的题,用的是2007版函数)

[ 本帖最后由 wshcw 于 2011-4-7 23:07 编辑 ]
日期20问.png

日期函数题.rar

6.29 KB, 下载次数: 225

再次更正错误

TA的精华主题

TA的得分主题

发表于 2011-3-23 10:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
马上要学习函数初级1的第四课,正好是个学习机会。
个人认为,有些题目说是今年,这里的“今年”在用公式时应该考虑是一个不定的概念。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-22 15:18 , Processed in 0.052985 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表