日期函数date的基本用法
小伙伴们好,昨天我们说了year,month,day这3个函数,它们可以从一个日期中分别提取出年份,月份和天数。如果反过来,想要由年月日3部分组成一个日期,就要用到date函数。它返回表示特定日期的序列数。
-01-
函数说明
date函数返回在excel日期时间代码中代表日期的数字,而且它会自动转换日期,看完下面的你就会知道是什么意思。
函数语法如下,有3个参数,分别是年月日。
DATE(year,month,day)
Year :必需。year参数的值可以包含一到四位数字。
如果year介于0到1899之间,则Excel会将该值与1900相加来计算年份。例如,DATE(108,1,2)返回2008年1月2日 (1900+108)。
如果year介于1900到9999之间,则Excel将使用该数值作为年份。例如,DATE(2008,1,2)将返回2008年1月2日。
如果year小于0或大于等于10000,则Excel返回错误值#NUM!。
Month: 必需。一个正整数或负整数,表示一年中从1月至12月的各个月。它不一定非要是1-12之间的整数,也可以是大于12或小于1的整数。当不在1-12之间时,date函数会对日期自动转换。
比如month大于12,DATE(2008,14,2)返回表示2009年2月2日的序列数。相当于2008-12-2往后推2个月。
再比如month小于1,DATE(2008,-3,2)返回表示2007年9月2日的序列号。相当于2008-1-2往前推了4个月。
Day: 必需。一个正整数或负整数,表示一月中从1日到31日的各天。同样它也不一定非要是1-31之间的整数,当不在1-31之间时,date函数会自动转换日期。
比如day大于31,DATE(2008,1,35)返回表示2008年2月4日的序列数。相当于2008-1-31往后推4天。
再比如day小于1,DATE(2008,1,-15)返回表示2007年12月16日的序列号。相当于2008-1-1往前推了16天。
-02-
具体应用
1.计算结款日期
假如账期是1个月,根据到货日期求结款日期。也就是到货日期往后推1个月就是结款日期。在B17单元格输入公式=DATE(YEAR(A17),MONTH(A17)+1,DAY(A17)),下拉填充。首先用year,month,day分别把年月日提取出来,然后在月份上加1个月,最后用date合并成一个新日期。
2.计算入职日期的上一个月最后一天的日期
上月最后一天的日期等于当月月初的日期减去1,比如2019-8-31就是由2019-9-1减1得到的。在C25单元格输入公式=DATE(YEAR(B25),MONTH(B25),),向下填充。用year和month分别提取出年份和月份作为date的第1和第2参数,第3参数什么也不写,相当于0。得到的日期是2019-9-0,可是没有这个日期,实际就是2019-9-1往前推1天。
如果你不理解上面公式的意思,可以用下面这个公式=DATE(YEAR(B25),MONTH(B25),1)-1,用year和month提取出年份和月份,天数为1,date就得到了当月月初的日期,也就是2019-9-1,然后减1就是上月月末的日期。
其实减1可以在第3参数day中减去,公式就可以写为=DATE(YEAR(B25),MONTH(B25),1-1)。1-1是0,继续化简为=DATE(YEAR(B25),MONTH(B25),0)。0可以省略,就成为最开始的公式。
还可以用=B25-DAY(B25)这个公式来取得上月月末的日期。是一样的道理。
3.计算入职日期所在月份的第1天的日期
这个就简单了,在C33单元格输入公式=DATE(YEAR(B33),MONTH(B33),1),下拉填充。或者用=B33-DAY(B33)+1这个公式,就是上月月末日期加1。别忘了还有text函数,公式为=--TEXT(B33,"e-m")。
4.计算入职日期所在月份的最后1天的日期
计算当月月末的日期同样是用下月月初的日期减1,在C41单元格输入公式=DATE(YEAR(B41),MONTH(B41)+1,),向下填充。
5.计算入职日期所在月份的天数
在上一个问题的基础上,用day提取出月末日期的天数就可以了。在C49单元格输入公式=DAY(DATE(YEAR(B49),MONTH(B49)+1,)),向下填充。
类似的题目昨天也说过,不过昨天的答案有点漏洞,没有考虑全面,应该改为=MATCH(,0/(MONTH(A14)=MONTH(A14+ROW($1:$31)-1)))+DAY(A14)-1,按ctrl+shift+enter三键结束。
链接:
https://pan.baidu.com/s/1o-3xz8TZPMO_Eg2sjIq0XA
提取码:udbe