Excel里的日期时间是什么
今天还是人事问了我一个小问题:
我们在做 13 薪折算时,如果员工在每月 15 日以后入职的,则当月不算, 15 日以前入职的当月计入。 举例: 2015 年5 月 2日入职,则总共在公司的工作月份是 8 个月,如果5 月 17日入职,则总共工作月份是 7 个月,该如何设定公式?
就觉得应该是一个很简单的问题,不过脑子抽抽了一下用DATEDIF写了一下,突然发现其实这个只要个月份就可以了,根本不需要用DATEDIF嘛,用个MONTH函数就解决了。
=12-MONTH(A2-15)
统一把天数剪掉15天,那15日之后的还是在这个月里面,15日之前的就跑到上个月去了,问题解决。
不过看到这个想起了Excel里面的格式。
Excel里面的格式看起来挺多的,但是实际上格子里面真正的格式就两种:文本和数字。
默认情况下,文本的靠左对齐,数字的靠右对齐,就这么简单,其他的只是一些显示上的变化而已。
举例来说,日期和时间其实都是一个数字,比如说2016年3月10日12点11分25秒,对应的是42439.00793这个数字,小数点以前的是日期,小数点以后的是时间。
可以把这个数字输入Excel然后把格式换成日期或者时间来看看。
知道这个,有些日期方面的操作就简单了。
所以说日期方面的操作无非也就是数字的加加减减而已。
比如说,Excel里面其实日期是从1900年1月1日开始算的,所以早于1900年的日期都会被认为是字符串,输入1889/1/1的话就靠左了:
你用1900/1/1 再减去2的话就要报错了
后来人事的同事说公式是对了,但是还有一点,2015年以前的要统一设置成12个月,我说这个得早点说啊,要做IF了:
=IF(A2<42020,12,12-MONTH(A2-15))
然后解释了一下这个42020是什么,其实就是2015年1月16号,做个IF,比这个早的就统一设置成12个月好了。
之后新的需求又来了,说那明年怎么办。。。我很想说手动加个365天吧 ( ◜◡‾) 但是大家都是同事,这样不太好啦,那就把42020改成自动适配上一年的1月16号吧。
取上一年的年份蛮简单的,用YEAR对TODAY()取一下年份再减一就好
YEAR(TODAY())-1
之后是怎么组到那年的1月16号,我选择用笨办法,简单粗暴的用&拼起来…
(YEAR(TODAY())-1)&”/“&1&”/“&1
这样就是上一年的1月1日了,再加上15天,搞定
=IF(B2<(NUMBERVALUE((YEAR(TODAY())-1)&”/“&1&”/“&1)+15),12,12-MONTH(B2-15))

