说起Excel的日期加减,这事儿可深可浅。很多人,真的,就停留在单元格里直接加个数字,以为那就是全部了。嘿,也不是不行,但这就好比你拿到了一台顶配的电脑,却只用它来玩扫雷,太浪费了。
首先,你必须,我是说必须,把一个观念刻进脑子里:Excel里的日期,本质上,是个“骗局”。
它披着“2023-10-26”这样的外衣,骨子里却是个冷冰冰的数字。Excel内心深处,根本不认识什么“年”、“月”、“日”。它只认一个东西:从1900年1月1日开始,到今天,一共过去了多少天。那个1900年1月1日,在Excel的世界里,就是数字 1。1900年1月2日,就是 2。以此类推,你今天打开Excel,输入一个函数=TODAY(),然后把这个单元格的格式从“日期”改成“常规”,你会看到一个五位数的整数。比如45000多。
这个数字,就是从那个遥远的起点到今天的总天数。
理解了这一点,你就捅破了第一层窗户纸。为什么日期可以直接加减一个整数?因为你就是在对那个底层的“天数”进行数学运算。
=A1+10
这不就是在A1单元格代表的那个总天数上,再往后数10天吗?结果自然就是10天后的日期。
=A2-A1
这不就是在计算两个日期背后的“总天数”之差吗?结果自然就是它们之间相隔了多少天。
这就是日期的直接加减,简单粗暴,解决燃眉之急,比如算个项目还有几天到期,或者计算两个事件之间间隔了多少天。绝对够用。
但你很快就会发现,世界不是这么简单运转的。你想加一个月呢?减两个月呢?
直接 +30?别闹了。月份有30天、31天,还有那个磨人的2月,28或29天。你要是敢直接加固定的天数,你的合同续签日期、员工转正日期、财务月结……迟早乱成一锅粥。
这时候,就该请出我们真正的英雄了——函数。
月份加减的王者:EDATE
这个函数,名字听起来有点怪,但信我,它简直是处理月份加减的救命稻草。它的作用只有一个,纯粹且强大:在指定的日期基础上,增加或减少指定的整数个月份。
它的语法简单到让人感动:
=EDATE(开始日期, 月数)
举个栗子。
A1单元格是 2023-1-31。
你想知道3个月后是哪天?
=EDATE(A1, 3)
Excel会给你 2023-4-30。看到了吗?它智能地知道4月只有30天,自动给你调整到了月末。你再试试 2024-1-31 加上一个月,它会给你 2024-2-29,因为它知道2024是闰年!
你想知道半年前是哪天?
=EDATE(A1, -6)
月数用负数就行。
EDATE这个函数,它就像一个忠诚的仆人,你告诉它开始日期、要跳跃的月数,无论是正数(未来)还是负数(过去),它都毫厘不差地给你精准定位到那个月的同一天。干脆利落。毫不拖泥带水。这才是专业人士的玩法。
月末日期的掌控者:EOMONTH
和EDATE是亲兄弟,EOMONTH(End of Month)的功能更专一,也更霸道。它只干一件事:返回指定日期之前或之后某个月份的最后一天。
这在什么时候最有用?财务!算账期!各种截止日期! 比如,所有款项必须在下单日之后的第二个月的月底前付清。
A1是下单日期 2023-3-15。
公式就是:
=EOMONTH(A1, 2)
结果是 2023-5-31。它不管你开始是15号还是1号,直接锁定目标月份,然后给你那个月的最后一天。
想算当月的最后一天?
=EOMONTH(A1, 0)
月数写0,就是当月。
想算上个月的最后一天?
=EOMONTH(A1, -1)
EDATE 和 EOMONTH,这两个函数组合起来,几乎能解决你80%以上关于“月”的计算难题。
工作日的精算师:NETWORKDAYS.INTL
好了,现在难度升级。老板让你排个项目计划,说这个任务需要15个工作日完成,从今天开始,问你什么时候能搞定。
你敢直接 +15 吗?周末怎么办?法定节假日怎么办?
这时候,就轮到 工作日计算 的神器出场了。NETWORKDAYS是个老牌函数,但现在我更推荐它的升级版:NETWORKDAYS.INTL。后面的INTL是International(国际)的缩写,意味着它更灵活,能自定义周末。毕竟现在很多公司都是大小周或者单休,对吧?
它的语法有点复杂,但值得你花时间搞懂:
=NETWORKDAYS.INTL(开始日期, 结束日期, [周末], [节假日])
这是用来计算两个日期之间的工作日天数的。
但我们现在要解决的是“未来日期”的问题,所以要用另一个函数,WORKDAY.INTL。
=WORKDAY.INTL(开始日期, 天数, [周末], [节假日])
看清楚,一个是算“天数差”,一个是算“结束日期”。
场景来了:
A1是开始日期 2023-10-26。
B1是需要的工作日 15 天。
假设我们还有个国庆节假日列表,在 H1:H3 区域。
我们的周末是常规的周六、周日。
公式可以这么写:
=WORKDAY.INTL(A1, B1, 1, H1:H3)
这里的 1 是什么意思?它是NETWORKDAYS.INTL和WORKDAY.INTL里的一个代码,代表“周六、周日是周末”。它还有很多选项,比如 11 代表只有周日是周末。你可以根据自己公司的作息,自定义周末。
这个函数,会自动跳过你设定的所有周末,以及你在节假日列表里提供的所有日期,然后给你一个精确到天、实实在在的、老板问起来你绝对不会心虚的交付日期。
年龄计算的终极答案:DATEDIF
说到日期计算,怎么能不提算年龄?这绝对是个高频需求,也是个大坑。
最天真的算法:(TODAY()-出生日期)/365。
我拜托你,千万别这么干。闰年呢?你考虑了吗?这样算出来的,是个大概的小数,极不准确,而且非常不专业。
真正的王者,是一个隐藏函数:DATEDIF。
为什么说它隐藏?你在Excel的函数列表里直接找,是找不到它的,也没有任何提示。但你只要输入 =DATEDIF(,它就能用。很神奇吧?据说是为了兼容早期版本留下来的。
语法:
=DATEDIF(开始日期, 结束日期, "单位")
这个“单位”参数,是它的灵魂,有几种写法,每种都有奇效:
* "Y":计算整年数。算周岁,用它就对了。
* "M":计算整月数。
* "D":计算总天数(效果和直接相减一样)。
* "YM":忽略年份,计算不足一年的整月数。比如算“2岁零8个月”里的那个“8”。
* "MD":忽略年月,计算不足一月的剩余天数。比如算“2岁8个月零15天”里的那个“15”。
* "YD":忽略年份,计算不足一年的总天数。
所以,计算年龄最完美的公式是什么?
A1是出生日期 1990-5-20。
=DATEDIF(A1, TODAY(), "Y")
这会返回一个干干净净的整数,告诉你这个人到底几周岁了。
如果你想得到更详细的,比如“XX岁XX月XX天”这种,你可以把几个参数组合起来:
=DATEDIF(A1,TODAY(),"Y") & "岁" & DATEDIF(A1,TODAY(),"YM") & "个月" & DATEDIF(A1,TODAY(),"MD") & "天"
这个公式一亮出来,办公室里的小白们看你的眼神都会不一样。
最后的几个忠告,或者说“坑”
-
警惕文本格式的日期:有时候你从系统里导出的数据,或者别人发给你的表格,里面的日期看起来没问题,但就是不能参与计算,一算就报错
#VALUE!。八成,它是文本。怎么判断?数字和真正的日期默认是右对齐的,而文本是左对齐的。解决办法很多,可以用DATEVALUE函数转换,或者用数据分列功能强行转一次。 -
日期的分解与重组:有时候你需要把一个日期拆开,单独用它的年、月、日。
YEAR()、MONTH()、DAY()这三个函数就是干这个的。反过来,如果你有三个单元格分别装着年、月、日,想把它们合并成一个真正的日期,请使用DATE(年, 月, 日)函数,不要傻傻地用&去连接,那会得到一个文本,而不是一个可以计算的日期。
掌握了这些,你才算真正摸到了Excel日期加减的门道。它不再是简单的 +1 或 -1,而是一套组合拳,是一门关于在电子表格里掌控时间的艺术。从简单的天数计算,到精准的月度跳跃,再到剔除节假日的智能排期,最后到那个神秘的DATEDIF,每一步,都是你从Excel新手走向高手的印记。
【excel日期怎么加减】相关文章:
excel怎么设置阴影12-05
Excel怎么自动减法?12-05
excel怎么嵌入文件12-05
怎么注册excel帐号12-05
excel除法怎么输入12-05
excel怎么组合图形12-05
excel日期怎么加减12-05
怎么裁剪excel表格12-05
excel怎么取消合并12-05
别急。这事儿,咱得掰开揉碎了说。12-05
结语:效率提升,从掌握小技巧开始12-05
excel怎么设置升序12-05
excel函数怎么运行12-05