DATEDIF函数,是一个隐藏函数,你或许看到过这个函数, 这一章,我会要讲到DATEDIF函数所有的用法, 其实有些实战案例还是有一些难度的! 首先你可以保存一下这张图片: 这张图片,包含了这个函数所有的用法, 此函数的意义在于计算时间差,公式: DATEDIF(开始时间,结束时间,模式) 如: 你想要计算开始时间和结束时间跨越的年份: DATEDIF('2001/5/2','2022/6/14','Y') 结果为:21 如果你要计算开始时间和结束时间跨越的所有月份: DATEDIF('2001/5/2','2022/6/14','M') 结果为:253 总天数差计算: DATEDIF('2001/5/2','2022/6/14','D') 结果为:7713 在同月中计算日差计算: DATEDIF('2001/5/2','2022/6/14','MD') 结果为:12 这个结果是直接忽略年份月份,计算日差值 年份内的月差值计算: DATEDIF('2001/5/2','2022/6/14','YM') 结果为:1 这个结果是忽略年份和日,计算月差值 年份内的日差计算: DATEDIF('2001/5/2','2022/6/14','YD') 结果为:43 这个结果是忽略年份和月份,计算日差值 如果你自己在做相关计算的时候,如果不确定你所需要的内容体现,你可以按照我这个方法,先制作一个图谱,然后再根据需求进行挑选. 实战案例 1.年龄计算 先用MID函数截取出生日期,然后用TEXT函数讲起变成日期模式,最后使用DATEDIF函数来做年份的模式的计算: 可以直接复制套用此公式: =DATEDIF(TEXT(MID(C2,7,8),'00-00-00'),TODAY(),'Y') 2.做生日提醒 下方是一些员工的生日,如何做一个生日提醒,并且是提前7天进行提醒,你可以使用到下面的公式: =IF(DATEDIF(C2,TODAY(),'YD')<=7,TEXT(DATEDIF(C2,TODAY(),'YD'),'还有0天生日;;今天生日'),'') 公式解析: DATEDIF(C2,TODAY(),'YD')这个计算结果是忽略年份月份的日差值. 如果这个值小于等于7,也就是在7天内进行提醒, 如果满足为7天内,那么: TEXT(DATEDIF(C2,TODAY(),'YD'),'还有0天生日;;今天生日') 如果不加上TEXT函数,例如离今天还有5天过生日,那么结果就是5. 但是加上TEXT函数之后,又可以再加一重文本判断: 在自定义格式中,数值有3个位置: 正数;负数;零 那么,下方这个格式: 还有0天生日;;今天生日 意思就是:当DATEDIF函数的数值为正数的时候例如:5天,则转换为: 还有5天过生日. 不可能会存在负数,所以第二个位置可以不用写, 当DATEDIF函数的数值结果为0,代表正好今天过生日, 那么0的位置就会变成今天生日. 如果不满足为7天内,则显示空值. 3.算员工工龄/合同到期 以计算工龄为例: 这样的工龄天数计算,我相信人人都会做把! 用截止日期减去今天,最后做一个条件格式: 员工1迄今为止在职406天, 当然,你也可以用这个计算值除以365 换算成在职年限, 这种做法不算精准 如果你的要求是要做成下面这个样子,就必须要要用到DATEDIF函数了! 公式有点长,直接可以套用: =TEXT(DATEDIF(C2,TODAY(),'Y'),'0年;;')&TEXT(DATEDIF(C2,TODAY(),'YM'),'0个月;;')&TEXT(DATEDIF(C2,TODAY(),'MD'),'0天;;') 解析: 分别计算出: Y年份 YM忽略年和日的月差 MD忽略年和月的日差 如果你直接把这三个内容相连,可能会出现这样的情况: 0年0月20天 很奇怪.. 所以你需要用TEXT函数进行转换 浓缩版: =TEXT(Y年份,'0年;0;')&TEXT(YM忽略年和日的月差,'0个月;0;')&TEXT(MD忽略年和月的日差,'0天;0;') 同样是TEXT的自定义功能用法:正数;负数;零 如:TEXT(Y年份,'0年;0;') 如果Y年份算出来是正数就是例如:1年 如果Y年份算出来不可能为负数, 如果Y年份算出来为0那么则不显示. 月份逻辑也是一样的,最后的结果如果是0年2月12天 组合出来的结果就是: 2个月12天 大家最好去尝试一下,看一遍如果模拟操作一遍. 以上 好多字...如果大家喜欢记得点赞哦!! |
|