作为一个每天和Excel打交道的人,我太懂这种心情了——领导让你统计这个月最后一天是几号,你TM竟然一个个手动翻日历。
我曾经有个同事,为了算月末日期,愣是每个月最后一天手动翻日历,然后用肉眼对比。当时我就在想:你TM是原始人吗?
直到我发现了EOMONTH这个函数。今天就让你知道,什么叫一键搞定月末日期。
一、EOMONTH到底是什么?
EOMONTH = End Of Month = 月末
翻译成人话就是:给我一个日期,还你N个月后的最后一天。
语法简单到哭:
=EOMONTH(开始日期, 月数)
- • 月数:往前或往后推几个月。正数=往后,负数=往前,0=当月
比如:
- •
=EOMONTH("2026-03-20", 0) → 2026年3月最后一天 = 2026-03-31 - •
=EOMONTH("2026-03-20", 1) → 2026年4月最后一天 = 2026-04-30 - •
=EOMONTH("2026-03-20", -1) → 2026年2月最后一天 = 2026-02-28
一行代码搞定,还要什么自行车?
二、基础用法:月末日期计算
场景1:算本月最后一天
假设A1单元格是"2026-03-20":
=EOMONTH(A1, 0)
结果:2026-03-31
场景2:算下个月最后一天
=EOMONTH(A1, 1)
结果:2026-04-30
场景3:算上个月最后一天
=EOMONTH(A1, -1)
结果:2026-02-28(2026年是平年,2月只有28天)
三、实战案例:我是怎么用EOMONTH摸鱼的
案例1:自动生成月度报表日期
我现在的日常工作是这样的——每天要根据"起始日期"和"结束日期"生成报表。
以前:
现在:
起始日期: =EOMONTH(A1, -1) + 1结束日期: =EOMONTH(A1, 0)
案例2:判断是否到月末
=IF(TODAY()=EOMONTH(TODAY(),0), "今天月末!", "还没到")
今天是不是月末,一眼看清。
案例3:计算剩余天数
=EOMONTH(TODAY(), 0) - TODAY()
距离月末还有多少天,领导问起来直接给答案。
四、进阶技巧:组合技才是真谛
配合TEXT函数格式化
=TEXT(EOMONTH(A1, 0), "yyyy年m月d日")
输出:2026年3月31日
配合EDATE(EOMONTH的兄弟)
EDATE算的是N个月后的同一天:
=EDATE("2026-03-20", 1) → 2026-04-20=EOMONTH("2026-03-20", 1) → 2026-04-30
配合IF判断季度末
=CHOOSE(MONTH(EOMONTH(A1, 0)), "Q1", "Q1", "Q1", "Q2", "Q2", "Q2", "Q3", "Q3", "Q3", "Q4", "Q4", "Q4")
自动判断是第几季度。
五、踩坑与解决方案
坑1:日期格式不对
错误用法:
=EOMONTH("2026/03/20", 0)
有些Excel不认这种格式。
解决方案:
=EOMONTH(DATE(2026,3,20), 0)
用DATE函数确保格式正确。
坑2:结果显示序列号
问题:EOMONTH返回的是日期序列号,不是日期格式。
解决方案:右键→设置单元格格式→日期或者用TEXT函数:
=TEXT(EOMONTH(A1, 0), "yyyy-mm-dd")
坑3:月份超出范围
错误用法:
=EOMONTH(A1, 999)
有些Excel会报错。
解决方案:实际上没人会输入这么大的月数,所以这坑基本可以忽略。
六、总结:为什么你一定要学会EOMONTH
说白了,EOMONTH解决的是一个核心痛点:我不知道这个月最后一天是几号,但我需要用它做表。
在EOMONTH出现之前,我们得靠手动翻日历、靠VBA、靠各种奇葩 workaround。现在不需要了——你只管写公式,Excel自己知道这个月有几天。
我现在的日常工作基本就是:输入起始日期→EOMONTH自动算→搞定。平均每天能节省至少1小时摸鱼时间。领导以为我任劳任怨,其实我早就偷偷下班了。
这就是效率工具的意义——不是让你干更多活,而是让你少干冤枉活。
如果你也被各种Excel/报表折磨,想早点下班又不会写自动化工具,欢迎关注私信聊聊烦恼,理顺逻辑写个脚本就是顺手的事。