网站首页 > java教程 正文
朋友们,大家好!
在日常工作中,我们经常用EXCEL函数处理表册,函数的运用,大幅度提升了我们的工作效率。笔者集合工作实际,把最常用的EXCEL函数进行逐一详细讲解,课程中有大量案例,为便于朋友们更加深入了解各个函数的用法,将于每天上午7:00同步发布视频教程和图文教程(包含公式)。只要不懈努力和不断实践,通过30天的系统学习,你也能成为EXCEL函数高手,从此告别加班,让同事和朋友刮目相看。
今天,我将和大家一起分享时间函数DATE和DATEDIF,广泛运用在计算每月天数、计算工龄、计算周岁等领域。
一、DATE函数基础知识
(一)DATE函数定义
DATE函数是指返回代表特定日期的序列号,如果在输入函数前,单元格格式为“常规”,则结果为日期格式。
语法:DATE(年,月,日)
年(YEAR):为1~4位的数字,并且要大于或者等于1900,EXCEL根据计算机使用的日期系统解释该参数。默认情况下,EXCEL使用1900日期系统,这意味着第一个日期是1900年1月1日。
如果该参数位于0~1899(包含这两个数)之间,则EXCEL会将该值加上1900,再计算年份。例如:DATE(121,1,1)返回2021年1月1日(1900+121)。如果该参数位于1900到9999(包含这两个数)之间,EXCEL将使用该数值作为年份。例如:DATE(2021,1,1)将返回2021年1月1日。如果该参数小于0或大于等于10000,EXCEL将返回错误值#NUM!。
月(MONTH):1~12之间的数字。如果大于12,将从下年度的一月份开始往上累加计算。例如:DATE(2021,14,1)返回代表2022年2月1日的序列号。如果小于0,将从指定年份前一年的12月份开始往下减去相应的月份数。例如:DATE(2021,-2,1)返回代表2020年10月1日的序列号。
日(DAY):1~31天之间的数字。如果大于该月份的最大天数,将从指定月份下个月的第一天开始往上累加。例如:DATE(2021,1,35)返回代表2021年2月4日的序列号。
(二)DATE函数案例实践
1.通过身份证号码提取出生日期并转换为标准日期
某单位在制作职工基本信息表的时候,已经输入了身份证号码,还需要填写出生日期,为了实现快速输入,需要一次性从身份证号码中提取出生日期并转换为标准日期格式,前几节课讲过用TEXT函数进行转换,本例还可以使用DATE函数进行转换。
在C3单元格中输入公式:=DATE(MID(B3,7,4),MID(B3,11,2),MID(B3,13,2)),按回车键即可通过身份证号码提取出生日期并转换为标准日期。见下图:
DATE函数可以将代表年月日的数字转换为日期序列号,如果输入公式前单元格格式是常规格式,该函数会默认以标准日期格式显示计算结果。
本例也可以使用文本连接符&将提取的年月日连接起来,虽然这样连接起来的日期中的月份和天数都是两位数,但是EXCEL依然会将其视为日期,其公式可写成:=MID(B3,7,4)&"-"&MID(B3,11,2)&"-"&MID(B3,13,2)。
2.计算指定月份的天数
某单位每月都要对周末和节假日排班,因为每个月的天数略有不同,现在需要用EXCEL制作一个公式,要求该公式能够返回当月的天数,并且能够随着时间的变化而变化。
需要知道某月有多少天,一般的方法是先判断该月是大月份还是小月份,如果是大月,该月就是31天;如果为非2月份的小月,则为30天;如果是2月份,还要判断该年是闰年还是平年,闰年则2月份有29天,平年则有28天。如果在EXCEL中用该方法计算当月的天数,写成的公式就会显得很复杂。但是因为每个月的最后一天就是该月的天数,所以只要知道了该月的最后一天,就可以知道该月的天数,可以通过EXCEL中日期函数的自动进位功能来实现。
在B3单元格中输入公式:=DAY(DATE(YEAR(A3),MONTH(A3)+1,0)),按回车键即可得到A3单元格指定的月份天数。见下图:
日期函数之所以具有自动进位的功能,这和EXCEL使用日期序列号记录日期有着很大的关系,当DATE函数第三个参数设置为0的时候,相当于该月第1天的前一天,即上个月的最后一天。
本例中,YEAR(A3)是指A3单元格的年度,MONTH(A3)是指A3单元格的月份,因为第三个参数0指的是上个月的最后一天,所以要+1将月份指定为当前月份,然后将YEAR(A3)、MONTH(A3)+1和0作为DATE的三个参数,最后用DAY函数得到天数。
二、DATEDIF函数基础知识
(一)DATEDIF函数定义
DATEDIF函数是指返回两个日期之间的年\月\日间隔数,常使用DATEDIF函数计算两日期之差,时间单位包含D,M,Y,YD,YM,MD。
语法:DATEDIF(起始日期,结束日期,时间单位)
起始日期:必需参数,表示给定期间的第一个或开始的日期。日期值有多种输入方式:包括带引号的文本字符串、序列号或其他函数的结果等。
结束日期:必需参数,代表时间段内的最后一个日期或结束日期。
时间单位:必需参数,是指为“起始日期”和“结束日期”返回时间单位的代码。
"Y"表示两个日期以“年”为单位的时间间隔。
"M"表示两个日期以“月”为单位的时间间隔。
"D"表示两个日期以“日”为单位的时间间隔。
"MD"忽略“年”和“月”后,两个日期以“日”为单位的时间间隔。
"YD"忽略“年”后,两个日期以“日”为单位的时间间隔。
"YM"忽略“年”,两个日期以“月”为单位的时间间隔。
(二)DATEDIF函数案例实践
1.根据身份证号码计算周岁
在工作中,我们经常会利用身份证号码提取出生日期,同时会计算年龄,通常用当前年数减去出生年进行计算,但是这样计算出来的结果并不是真正的年龄,比如相差一个月按一年计算。本例中用DATEDIF函数,通过身份证号码计算周岁。
在C3单元格中输入公式:=DATEDIF(TEXT(MID(B3,7,8),"0000-00-00"),TODAY(),"Y"),按回车键即可根据身份证号码计算周岁。见下图:
本例中,用MID(B3,7,8)从身份证号码中提取出生日期,然后用TEXT将出生日期转换为标准日期格式,作为DATEDIF函数的第1个参数“起始日期”,然后用TODAY()得到当前日期作为第2个参数,用"Y"作为第3个参数即可得到周岁。
2.根据工龄计算职工公休的天数
某单位每年安排职工公休,规定工龄不足5年享受5天公休假;工龄20年以下享受10天公休假;工龄20年以上享受15天公休假,现在需要计算每位职工每年的公休假天数。
在C3单元格中输入公式:=DATEDIF(B3,TODAY(),"Y"),计算出工龄,在D3单元格中输入公式:=IF(C3<10,5,IF(C3<20,10,15)),按回车键即可根据工龄计算出每年的公休假天数。见下图:
本例中,利用辅助列C列计算出工龄,然后用IF函数进行判断,这样写成的公式容易理解。如果不用辅助列,公式可写成:=IF(DATEDIF(B3,TODAY(),"Y")<10,5,IF(DATEDIF(B3,TODAY(),"Y")<20,10,15)),公式相对要长一些,新手不容易理解,建议使用辅助列辅助计算。
3.计算精确到月份的职工工龄
计算职工的工龄,其实就是计算职工参加工作的时间和当前时间之间的日期间隔,使用DATEDIF函数就可以解决这样的问题。
在D3单元格中输入公式:=TEXT(DATE(0,DATEDIF(C3,TODAY(),"M"),1),"y年m月"),按回车键即可计算出精确到月份的职工工龄。见下图:
本例中,使用DATEDIF(C3,TODAY(),"M")计算出工龄的总月数,然后用DATE将代表年的0、DATEDIF计算的月份数和代表每月1日的1转换为日期,最后用TEXT函数将显示格式转换为年和月。
以上就是日期函数DATE和DATEDIF的基础知识和经典案例,想要学习好EXCEL函数,要学会多个函数的组合,后续课程中我们会讲到多函数结合的用法,能进行更为复杂的计算,对提升工作效率有很大帮助。
个人建议:在学习EXCEL函数时,首先要熟悉函数的功能和语法,尽量多写,通过反复书写和实践,对照文中的案例,举一反三,我相信,你的EXCEL技巧会得到快速提升,日积月累,必成大器!
感谢朋友们的支持,如果你有好的意见建议和问题,欢迎在评论区留言交流,期待你的精彩!
猜你喜欢
- 2024-11-07 Excel 时间日期函数:掌握时间的秘密武器
- 2024-11-07 excel函数技巧:如何按要求计算时间?巧用int和mod函数
- 2024-11-07 034.日期与时间函数(Today、Now) #零基础教学
- 2024-11-07 Mysql数据库常见函数(下)——日期时间函数
- 2024-11-07 Axure高保真教程:日期时间下拉列表
- 2024-11-07 轻松办公-OfficeExcel函数精解(八十九)日期和时间之TODAY函数
- 2024-11-07 十分钟学会WEEKDAY函数用法,让你轻松计算任意日期的星期几!
- 2024-11-07 python中日期与时间函数(python 日期)
- 2024-11-07 Excel函数之日期与时间函数date,day,hour,minute,month等
- 2024-11-07 HR必备Excel函数:4个与日期相关的计算函数。
你 发表评论:
欢迎- 最近发表
-
- 多种负载均衡算法及其Java代码实现
- 输入www.baidu.com背后经历了啥?说清楚这个,已经超过90%的人了
- 优化MySQL:为什么你应该用 UNSIGNED INT 存储IP地址
- 实模式下CPU如何获取数据及指令(实模式寻址方式)
- java基础都在这了,小主们拿去吧(java基础是指什么)
- 盘点爬虫语言为何选择Python而不是Java
- 搭载Dubbo+Zookeeper踩了这么多坑,我终于决定写下这篇
- 网络协议之TCP/IP协议(面试必考内容) - javaEE初阶 - 细节狂魔
- 深夜报警!10亿次请求暴击,如何用Redis找出最热IP?
- VPN技术(IPsec/L2TP/SSLVPN/PPTP)学习笔记
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)