![6b3a1445be36f379b653039624c657b5.png](https://i-blog.csdnimg.cn/blog_migrate/b785c94686f4df8de3c5d044b6bc7ee7.jpeg)
工作中会经常遇到处理日期的需求,比如:
人事部门要做一份员工工龄统计...财务部门需要计算一下每项业务的付款周期...
下面我们通过一个案例,来看下如何解决这类“日期间隔”的问题,让你在职场中如鱼得水。
现有一份电商婴儿数据报表,里面记录了电商网站上购买的婴儿商品信息,比如婴儿的出生日期,购买商品的日期。现在领导要求快速计算出婴儿“”年龄“这一列里的值,该如何实现呢?
![4d3c234936a0032ec079c3e7f24d16db.png](https://i-blog.csdnimg.cn/blog_migrate/cfea64ed0c654dca36bcff66c859ec84.jpeg)
第1种操作套路:
1)用“出生日期”列得到婴儿的出生年份
2)用“购买日期”列得到当前的年份
3)年龄=当前年份 - 出生年份
![99bbd6935b38f56b4f3e6f4d9fecafc3.png](https://i-blog.csdnimg.cn/blog_migrate/73e91af20636a2b2440f41dcb5305e1f.jpeg)
![e107ba378f0d3e0ef778b92eb0616f4f.gif](https://i-blog.csdnimg.cn/blog_migrate/e25e1665b680c0c60d19eb7ef5fd434e.gif)
或许,还有第2种套路...
![80daac657cb0170c1f0ee485a7366205.png](https://i-blog.csdnimg.cn/blog_migrate/69f0c64d7971d1aa7fcc79b9dcb511a3.jpeg)
![e956f3ddf56e87aff2505df06656bfcf.gif](https://i-blog.csdnimg.cn/blog_migrate/dec6eca28927bdb3db04f01354e268a3.gif)
虽然通过上面两种方法,我们可以达到目的。但是,如果业务需求不只是求年龄呢?比如还要求月份差,天数差呢?
此时,赶紧呼唤我们的主角出场:datedif函数
现在,把舞台交给他...
先做一下自我介绍吧!
大家久等啦!我叫datedif,是函数家族的成员之一。但是我天生内向,大家可以叫我隐藏函数。
什么是隐藏函数呢?
在电影《哪吒》里,大家藏起来,被哪吒找出来,就是“隐藏”。
![41f2688d243ab99a551e7daf9e49cf1a.png](https://i-blog.csdnimg.cn/blog_migrate/278f73d295b2d4e331643bb2793df808.jpeg)
同样的,隐藏函数,顾名思义就是在函数列表中是找不到的。
![636d6453e4c221f1f7d106356cc7651e.png](https://i-blog.csdnimg.cn/blog_migrate/16b1fe4facf4bfd1fb153f8f0fe6a5f2.jpeg)
输入datedif的前几个字母后无法通过Tab键来补全函数
![ab34dc308f08065826e70ecac92ea519.png](https://i-blog.csdnimg.cn/blog_migrate/5ebd27cd0b3ee73b2926dd42ba3e4764.jpeg)
我的身体由3个参数组成,分别是:起始日期、结束日期、返回值。
我的主要功能是:计算两个日期之间的差值。这个差值可以是年、月、日等不同的值。
我来具体演示一下吧。
1.年份差
当“返回值”是2个日期的年份差值时,第3个参数写y,并用双引号包裹。
"y":返回两个日期之间的整年数差,不足一年的不累计
![47e1c8f1e305edec73d367832826f4c2.png](https://i-blog.csdnimg.cn/blog_migrate/2d88e65995ac700f8e6753ee26bb3fae.jpeg)
公式写好之后,将公式填充到整列,就返回了年龄值
![ad87c1443be6e35834ba493142773148.png](https://i-blog.csdnimg.cn/blog_migrate/41663c584215ba67437f715e8f80fa25.jpeg)
2.月份差
问:假如我的需求不是年龄,而是月龄呢?
答:“y”替换成“m”即可
"m":返回两个日期之间的整月数,不足一个月的不累计
![ca692fcafa73d122049b318fc9031aca.png](https://i-blog.csdnimg.cn/blog_migrate/515140dd17aceab6d2198de060cd1388.jpeg)
3.天数差
问:假如我的需求不是年龄,而是间隔天数呢?
答:“y”替换成“d”即可
"d":返回两个日期之间的整天数
![a7a8bec2e830a3209f7484392a7184a6.png](https://i-blog.csdnimg.cn/blog_migrate/03ba8ced153f78fe9df6ddccc4f3d7fb.jpeg)
公式写好之后,将公式填充到整列,返回间隔天数
![ed344af3f3a5cbccf1369248f2698fc7.png](https://i-blog.csdnimg.cn/blog_migrate/669c3159a9f41bf5922944cbd520ab2b.jpeg)
火眼金晶的童鞋早就看出了一处问题,一直在等待,案例中总有一处返回值#NUM(上图中黄色块的地方),为什么呢?
答:召唤我做任务时,有一个潜规则:第一个参数(起始日期)必须小于第二个参数(结束日期),否则就会返回#NUM。
4.与其他函数结合使用
此外,在实际应用中,datedif函数还经常嵌套today函数(表示当前日期)来实现某些目的。
比如想计算一下自己数据分析学了多久呢?以提醒自己是否要加快速度。
datedif的第一个参数写"开始日期",即N2单元格
第二个参数写today(),用今天的日期代表"结束日期"
第三个参数写"d