Excel中有一类函数叫隐藏函数,你在Excel的函数列表里是找不到它们的身影的,甚至连微软的帮助文件里也没有相关说明,但是它们不但功能强大,而且在工作中应用广泛。DATEDIF就是一个神奇的隐藏函数,它存在于Excel中,但是在Excel的帮助文件中却找不到它。今天我们就来扒一扒这个神奇的隐藏函数。

1

DATEDIF函数详解DATEDIF的基础语法为:DATEDIF(开始日期,结束日期,间隔类型)  其中,参数start_date和end_date是两个日期,并且前者一定不能大于后者。unit有以下6个参数,分别用来计算不同的差异,如下表所示。DATEDIF的参数在日常拼写中,有的人会漏写函数名称中间的D,变成DATEIF,这是错误的,而且输写错误时,Excel系统不会提示。此函数单词有一个简单的记忆方式:DATEDIF缩写于Date Different,译为不同的日期。

2

计算两个日期间的年、月、日间隔如下图所示,这是DATEDIF的常规用法,这6个参数的实际意义,我们可以结合图中的数据进行讲解。

DATEDIF常规用法首先,在D16、D24单元格中分别输入以下公式,向下分别复制到D21、D29单元格,以计算出不同参数的差异:=DATEDIF(E16,F16,C16)  =DATEDIF(E24,F24,C24)  D24单元格,参数“Y”,单看2017年和2020年,相差年数应为3,但是从2017/7/28到2020/2/8,先过2年到2019/7/28,还没到要求的2020/2/8,再过1年的话,就到了2020/7/28,会超过结束日期,所以其结果返回2,不能返回3。D25单元格,参数“M”,2017/7/28过30个月便到了2020/1/28,然后再过1个月就到了2020/2/28,超过了结束日期2020/2/8,所以结果只能为30,不能为31。要充分体会“整年数”“整月数”中“整”字的意思。D26单元格,参数“D”,就相当于两个日期直接相减,计算天数的差。D27单元格,参数“MD”,这个计算忽略月和年,相当于把start_date拉近到end_date 前最接近的日期。也就是说,将2017/7/28拉近到2020/2/8之前日期为28的最接近日期,即2020/1/28,然后计算2020/1/28与2020/2/8之间的天数差,即11天。D28单元格,参数“YM”,忽略日和年计算整月数,即相当于把2017/7/28拉近到 2020/2/8之前最接近的7月28日,变成2019/7/28,然后计算其与2020/2/8之间的“整”月数差,即6个月。D29单元格,参数“YD”,忽略年计算天数差,相当于把start_date拉近到end_date前最接近的相同月和相同日的日期。也就是说,将2017/7/28拉近到2019/7/28,然后计算2019/7/28与2020/2/8之间的天数差,即195天。 在使用“MD”“YD”参数计算天数差时,由于闰年的存在,有时会与理想值相差一天,这种情况一般不会影响我们的日常使用。

3

整年、月、日区别如下图所示,列出了2017/7/28到2020/7/27与2017/7/28到2020/7/28的对比,虽然end_date只差了1天,但是结果有比较大的差异。计算原理相同,要体会“整”字的含义。

整年、月、日区别这么多参数需要怎么记忆呢?首先要知道这个函数的作用,理解每一个参数的计算原理。如果工作中常常需要计算日期,可以将其打印出来,贴在桌子旁即查即用。

4

案例:工龄计算假定今天是2019/7/28,每个员工参加工作的日期如下图中C列所示,那么每个人的工龄是多少呢?工龄可表示成m年n个月的形式。

工龄计算可以分步进行操作。首先计算“整年”数,然后计算“整月” 数。计算月数时需要注意,月数的值最大不会超过11,因为到12个月就是1年了,即要忽略年份的存在来计算月数。那么使用哪个参数计算呢?从上一节讲的DATEDIF的参数对照表中可以看到,计算整年数使用参数“Y”,而忽略年计算整月数使用“YM”。于是D51单元格的函数公式可以写成:(左右拖动查看完整公式)

=DATEDIF(C51,"2019/7/28","Y")&" 年 "&DATEDIF(C51,"2019/7/28","YM")&" 个月 "

我们看一下D54:D56单元格区域,仅相差1天,计算结果便不同。所以使用DATEDIF时,始终要有一个“整”的概念在脑海中。另外,DATEDIF中的Y、M、D参数,大小写均可以。

5

案例:年假天数计算《职工带薪年休假条例》规定,职工累计工作已满1年不满10年的,年休假为5天;已满10年不满20年的,年休假为10天;已满20年的,年休假为15天。同样,假设今天是2019/7/28,那么每名员工的年休假天数分别为多少天呢?其实这个题目比上一节的案例更简单,只需知道每名员工参加工作的年数即可。如下图所示,在D66单元格中输入以下公式,计算出每名员工的工作年数:=DATEDIF(C66,DATE(2019,7,28),"Y")

年假天数计算在这里再次强调,如果在公式中使用快捷输入的方式表达日期,必须加双引号,如上节中的“DATEDIF(C51,"2019/7/28","Y")”,如果掌握不了双引号使用,就规规矩矩地使用DATE函数,保证不会出错。根据D列的年数,可以计算法定年假的天数,在E66单元格中输入以下公式:=LOOKUP(D66,{0,1,10,20},{0,5,10,15})  好了,今天的内容就是这些,如果你有兴趣,也可以自己尝试做一做练习。作者:翟振福

写的函数符号表里没有_DATEDIF函数,看看你的Excel里有没有?相关推荐

  1. 写的函数符号表里没有_你有没有想过,C语言 main 函数到底为啥这么写?

    但凡是学过C语言的人,都知道要先写main函数,然而很多时候我们看到的main函数却各有差异,这究竟是为啥?哪种是对的呢?今天我们就来聊聊main函数. 那么main函数一共有多少个版本呢? 1.ma ...

  2. filter函数的用法_这几个超牛函数,你的Excel里有没有?

    小伙伴们好啊,今天和大家分享几个Office 365中新函数的典型用法,有了这些新函数,让原本复杂的计算变得越来越简单.1.数据转置如下图所示,为了便于打印,要将A列中的姓名,转换为多行多列.D6单元 ...

  3. 终于,在Excel里也能直接写python了

    大家好,我是一行 之前在处理数据的时候,最开始都是在excel里处理,后来当数据量上了一个级别后就用python导入excel文件接着处理了 很多人会说,excel有自带VBA语言,可以用那个来处理呀 ...

  4. 干货 | 如何写一个更好的Python函数?

    乾明 编译整理自 Medium  量子位 报道 | 公众号 QbitAI Python虽然好用,但用好真的很难. 尤其是函数部分,只要写不好,后面的一连串人都会遭殃. 看又看不懂,测试起来也麻烦,维护 ...

  5. R语言使用lm函数构建多元回归模型(Multiple Linear Regression)、并根据模型系数写出回归方程、使用fitted函数计算出模型的拟合的y值(响应值)向量

    R语言使用lm函数构建多元回归模型(Multiple Linear Regression).并根据模型系数写出回归方程.使用fitted函数计算出模型的拟合的y值(响应值)向量 目录

  6. 【数字图像处理】模拟Matlab的imresize()写一个你自己的imresize()函数,至少应实现‘nearest’和‘bilinear’两种方法

    作业要求:模拟Matlab的imresize()写一个你自己的imresize()函数,至少应实现'nearest'和'bilinear'两种方法. 首先理论方面主要参考了一下两个网址 https:/ ...

  7. R语言使用lm函数构建多元回归模型(Multiple Linear Regression)、并根据模型系数写出回归方程、使用resid函数或者residuals计算出模型的残差值

    R语言使用lm函数构建多元回归模型(Multiple Linear Regression).并根据模型系数写出回归方程.使用resid函数或者residuals计算出模型的残差值 目录

  8. 手写max,min,abs函数

    手写max,min,abs函数 在信息学奥赛中,一定要手写函数,这样时间更快 在考场上,时间复杂度是真的很重要的东西 int maxx(int a,int b) {if(a>b) return ...

  9. 给定一个数学函数写一个程序来确定该函数是否是双射的

    离散题目11 Time Limit: 1000 msMemory Limit: 65536 KiB Problem Description 给定一个数学函数写一个程序来确定该函数是否是双射的 Inpu ...

  10. R语言使用lm函数构建多元回归模型(Multiple Linear Regression)、并根据模型系数写出回归方程、使用deviance函数计算出模型的残差平方和

    R语言使用lm函数构建多元回归模型(Multiple Linear Regression).并根据模型系数写出回归方程.使用deviance函数计算出模型的残差平方和 目录

最新文章

  1. [转]应届毕业生生存法则--工作篇
  2. php pdo预处理语句与存储过程
  3. 架构设计 | 接口幂等性原则,防重复提交Token管理
  4. mui封装的ajax请求
  5. Linux磁盘、内存、CPU、进程
  6. php观察者模式使用场景,php设计模式系列--观察者模式
  7. python计算器外壳模板
  8. TortoiseGit状态图标不能正常显示的解决办法
  9. HDMI/DVI分配器芯片
  10. 夜神模拟器报错 daemon still not running error: cannot connect to daemon
  11. OROCOS之KDl库在Linux系统下安装学习记录:01
  12. Qt 笔锋 毛笔 钢笔 蜡笔 4k流畅画笔 Demo
  13. vim移动光标功能键
  14. 多种方法让你在PC上使用iCloud服务
  15. 波士顿房价预测(终版讲解)
  16. windows批处理命令教程
  17. The Complete Guide To Rooting Any Android Phone
  18. mysql常用的tamper脚本,tampermonkey 实用脚本
  19. 什么是HIS,以及HIS的作用,特点,组成部分
  20. 丽江文化旅游学院易腾创想Java实训第14组总结

热门文章

  1. 巩固有私有VLAN和VLAN访问控制列表的网络
  2. 365Key今天不能用了,感觉不爽
  3. linux recv返回值,Nginx 的recv() failed 错误解决一例
  4. ubuntu 如何确定虚拟机中的网关_如何在虚拟机中安装Kali Linux
  5. @postconstruct 不执行_【如何分析恶意软件在系统中执行了?】
  6. php redis stream,php redis-close() 之后为什么还能使用 $redis-get('key') 获取数据?
  7. mysql点击计数器_高性能Mysql(第3版)_网站点击计数器
  8. 在android中用跑马灯的效果显示textview
  9. Spring mvc时间格式处理
  10. 孟非带伤录制非诚勿扰