Excel中有个工作表函数DateDif,专门用来计算两日期之间的日差、月差、年差,传说十分好用。

具体用法在此就省略了,好奇的童鞋请自行*度~

可是,在Excel里,他却是个“没户口”的……且至今还是“黑户”……这都多少年过去了,他这户口问题,到现在没解决!

有人说,那是因为DateDif有BUG,别的不说,就看这:

从1月31日到3月1日之间 忽略年和月的单纯的日差,差,呃,-2天?你说他怎么想的?公式结果都混成这样了,还想报户口?难怪黑户了!

可是,你造吗?DateDif童鞋这是在背锅……

这话,就得从工作表中的日期本质开始说起了,事实上,日期就是数值穿了件外衣,数值就是日期的裸奔形式……咳咳,有点扯远了,好吧我们来看这个:

B2里显示的是数值“44470”,对他设置单元格数字格式时,里面【短日期】和【长日期】的选项就是2021年10月1日,所以“44470”其实是在裸奔……咳咳……不是,我其实想说,日期,是一个连续的值,从1900年1月1日起,每一天相当于数值1,一路小跑到今天,终于奔到了44470……(暂时忽略1900-2-29的问题)

再重复一遍:工作表日期,从1900-1-1至9999-12-31,本质上是一个连续的数值、连续的数值、连续的数值、连续的!连续的!连续的!

所以,DateDif函数的结果也是连续的!连续的!连续的!

从1月1日起,到2月25日、26日……3月1日、2日,年差都是0,月差从1到2,日差也都是顺着来,这,没毛病吗?

可是,从1月31日起,毛病就来了……

你说,人家能怎么办呢?从月的角度来看,1月31日到3月1日之间,确实是相隔一个月以上了,一个1月一个3月啊,但两者的日期相隔呢?呃29天?好像有道理,所以,1月31日到3月1日之间相隔了一个月外加29天?这小学算术是谁教的?

再加上之前一直强调的,日期是个连续的数值,DateDif的结果也是连续的数值,所以这里不用负数用谁啊?否则你让人家怎么连续啊?

那么话又说回来了,这锅,DateDif童鞋究竟是在为谁背?

为设计日期的那个家伙!因为每个月的天数有差异,有28天、有29天、有30天、有31天。

所以,当DateDif里的起始日期是1-27日时,人家绝对是函数界里的五好青年,不怕苦不怕累埋头苦干兢兢业业计算着每两个日期之间的各种差……

好吧,我这话说太早了,从1月27日到2月27日(非闰年)之间,相差几个月几天?1个月0天,好像是对的,可是,好像,又有哪里不对?!

1月27日距月底还有4天,2月27日距月底,就1天了,怎么能说这二位相差1个月0天?

所以,在我们认知当中,日期差有两个标准,一是以月初为标准,另一是以月末为标准,月初都是从1日开始,这个没毛病, 而月末……

我们是否可以设计一套函数,把月末作为标准呢?这个,嗯,可以有!

公式如下:

Y:=YEAR(EDATE(B3+DAY(EOMONTH(A3,0))-DAY(A3)+1,-MONTH(A3)))-YEAR(A3)

YM:=MOD(MONTH(B3+DAY(EOMONTH(A3,0))-DAY(A3)+1)+11-MONTH(A3),12)

MD: =DAY(B3+DAY(EOMONTH(A3,0))-DAY(A3)+1)-1

如此一来,日期间隔有了两个标准,理论上是可以用IF来加个判断,某天(比如28日)之前的用DateDif,之后的用月末标准。但是这样一来,必然又会出现另一个问题,明明起始日期不是同一天,相差结果却是一样,抽嘴角……

所以,这个BUG,其实是解决不了了,大概这才是导致DateDif这位大好青年一直以来“黑户”的真正原因吧。

彻底解决的办法有没有呢?

肯定是有的,那就是改日期规则,每年12个月、每月全部固定30天,多下来5、6天怎么办呢?

全部算假期呗~

替DateDif哭诉一把(Excel函数集团)的更多相关文章

  1. LET函数(Excel函数集团)

    LET函数,是个Office365新增函数,所以,还在用上古版本的童鞋请无视此篇哈~ 话说Excel中,有个自定义名称的功能,如下图,左右两个表分别自定义了"data1"和&quo ...

  2. Vlookup大叔与一对多查找(Excel函数集团)

    所谓一对多查找,就是根据一个条件,把多个符合条件的结果全部找出来. 其实吧,一对多查找不是什么,尤其是O365的Filter函数横空出世震撼全场之后,简直就是瞬间把所有传统的数组解法甩出去七八十来条街 ...

  3. Vlookup大叔早已油腻(Excel函数集团)

    1.Vlookup基础用法:https://mp.weixin.qq.com/s/0JRytWlBD-KYM2jkecG2rA 2.合并字符串:https://mp.weixin.qq.com/s/9 ...

  4. 字符串函数(Excel函数集团)

    此处文章均为本妖原创,供下载.学习.探讨! 文章下载源是Office365国内版1Driver,如有链接问题请联系我. 请勿用于商业!谢谢 下载地址:https://officecommunity-m ...

  5. 日期与时间函数(Excel函数集团)

    此处文章均为本妖原创,供下载.学习.探讨! 文章下载源是Office365国内版1Driver,如有链接问题请联系我. 请勿用于商业!谢谢 下载地址:https://officecommunity-m ...

  6. 统计函数(Excel函数集团)

    此处文章均为本妖原创,供下载.学习.探讨! 文章下载源是Office365国内版1Driver,如有链接问题请联系我. 请勿用于商业! 谢谢 下载地址:https://officecommunity- ...

  7. 数组基础(Excel函数集团)

    此处文章均为本妖原创,供下载.学习.探讨! 文章下载源是Office365国内版1Driver,如有链接问题请联系我. 请勿用于商业! 谢谢 下载地址:https://officecommunity- ...

  8. 数据库函数(Excel函数集团)

    此处文章均为本妖原创,供下载.学习.探讨! 文章下载源是Office365国内版1Driver,如有链接问题请联系我. 请勿用于商业! 谢谢 下载地址:https://officecommunity- ...

  9. 其他(Excel函数集团)

    此处文章均为本妖原创,供下载.学习.探讨! 文章下载源是Office365国内版1Driver,如有链接问题请联系我. 请勿用于商业!谢谢 下载地址:https://officecommunity-m ...

随机推荐

  1. [atAGC050A]AtCoder Jumper

    考虑二叉树的结构,但并不容易构造从叶子返回的边 (以下为了方便,将所有点编号为$[0,n)$) 对于$i$,选择$2i\ mod\ n$和$(2i+1)\ mod\ n$这两条出边 从二叉树的角度并不 ...

  2. [luogu5574]任务分配问题

    首先暴力dp,令$f_{i,j}$表示前$i$个点划分为$j$段,即有转移$f_{i,j}=\min f_{k-1,j-1}+calc(k,i)$(其中$calc(i,j)$表示求区间$[i,j]$的 ...

  3. Insights直播回顾,对话专家,HMS Core 6创新能力解读

    HMS Core Insights第八期直播–对话专家,HMS Core 6创新能力解读,已于11月25日圆满结束,本期直播与小伙伴们一同了解了HMS Core 6在图形.媒体以及连接与通信领域推出的 ...

  4. P2066 机器分配 解析

    小日记: 1.今天新学的字体颜色,尽管不熟悉,但玩的666,卡星(开心) ╰( ̄▽ ̄)╮╰( ̄▽ ̄)╮╰( ̄▽ ̄)╮╰( ̄▽ ̄)╮╰( ̄▽ ̄)╮╰( ̄▽ ̄)╮ 2.今天油腔滑调,谅解亿下 P2066 ...

  5. ASP .Net Core 在 CentOS8 ARM 下连接 SQL Server 2008 R2(Hypervisor)

    本文主要记录在 ARM 系统下无法连接SQL Server 2008 R2 的解决过程. 解决方案是使用 ODBC 的方式连接数据库,进行操作. 手上有公司的华为鲲鹏云计算 ARM 架构的 CentO ...

  6. 力扣 - 剑指 Offer 46. 把数字翻译成字符串

    题目 剑指 Offer 46. 把数字翻译成字符串 思路1(递归,自顶向下) 这题和青蛙跳台阶很类似,青蛙跳台阶说的是青蛙每次可以跳一层或者两层,跳到第 n 层有多少种解法,而这题说的是讲数字翻译成字 ...

  7. Atcoder Grand Contest 001 D - Arrays and Palindrome(构造)

    Atcoder 题面传送门 洛谷题面传送门 又是道思维题,又是道把我搞自闭的题. 首先考虑对于固定的 \(a_1,a_2,\dots,a_n;b_1,b_2,\dots,b_m\) 怎样判定是否合法, ...

  8. 洛谷 P4094 [HEOI2016/TJOI2016]字符串(SA+主席树)

    题面传送门 一道码农题---- u1s1 感觉这类题目都挺套路的,就挑个有代表性的题写一篇题解罢. 首先注意到答案满足可二分性,故考虑二分答案 \(mid\),转化为判定性问题. 考虑怎样检验 \(m ...

  9. fluidity详解

    fluidity详解 1.fluidity编译过程 1.1.femtools库调用方法 编译fluidity/femtools目录下所有文件,打包为libfemtools.a静态库文件: 通过-lfe ...

  10. scrapy安装及入门使用

    scrapy安装及入门使用 安装 pip3.7 install Scrapy 输入scrapy命令查看是否安装成功 J-pro:myproject will$ scrapy Scrapy 2.1.0 ...