EOMONTH 核心作用:返回指定日期偏移 N 个月后,对应月份的最后一天日期,自动处理大小月、平闰年,是会计月末结转、期末报表、账龄计算的专用函数。
一、标准语法
=EOMONTH(开始日期, 偏移月份数)
| 参数 | 规则说明 |
|---|---|
| 开始日期 | 必须是 Excel 可识别的合法日期(DATE函数生成、单元格真实日期、数组均可),不能是文本格式的日期 |
| 偏移月份数 | 整数: • 正数 = 向后偏移(未来月份) • 负数 = 向前偏移(过去月份) • 0 = 当月月末 • 小数会直接截尾取整(如2.9按2个月计算,不四舍五入) |
二、基础用法示例(单个日期)
1. 取当月月末
=EOMONTH(DATE(2026,1,15), 0)
返回:2026/1/31
2. 取上月月末(结转常用)
=EOMONTH(DATE(2026,1,15), -1)
返回:2025/12/31
3. 取下月月末
=EOMONTH(DATE(2026,1,15), 1)
返回:2026/2/28(2026平年,自动适配2月天数)
三、进阶批量用法(结合动态数组)
1. 生成2026年第1季度月末序列(对应你的练习题)
=EOMONTH(DATE(2026,1,1), SEQUENCE(3,1,0,1))
SEQUENCE(3,1,0,1)生成0、1、2三个偏移量- 按回车自动溢出3行结果:
2026/1/31、2026/2/28、2026/3/31
2. 生成全年12个月月末序列
=EOMONTH(DATE(2026,1,1), SEQUENCE(12,1,0,1))
3. 格式化输出标准日期文本
=TEXT(EOMONTH(DATE(2026,1,1), SEQUENCE(3,1,0,1)), "yyyy-mm-dd")
返回:2026-01-31、2026-02-28、2026-03-31
四、会计实战场景示例(贴合凭证明细表)
1. 筛选1月份所有记账凭证
=FILTER(凭证明细,
(凭证明细[日期]>=DATE(2026,1,1))*
(凭证明细[日期]<=EOMONTH(DATE(2026,1,1), 0)),
"无当月凭证"
)
2. 批量计算应收账款账龄到期日(月结30天)
=EOMONTH(凭证明细[日期], 1)
含义:记账当月月末再加1个月,作为到期还款日。
3. 计算季度末计提基准日
=EOMONTH(DATE(2026,1,1), 2)
返回一季度末日期 2026/3/31,用于计提费用、结转损益。
五、避坑指南
-
返回值显示为一串数字 Excel 日期本质是序列号,选中单元格 →「开始」选项卡 → 数字格式改为「短日期」即可。
-
开始日期是文本格式会报错 如果是
"2026.01.15"这类文本,先用DATEVALUE转换:=EOMONTH(DATEVALUE("2026-01-15"), 0) -
空单元格会返回异常日期 引用整列时如果包含空白行,会返回
1899/12/31,建议配合FILTER先剔除空行。 -
月份数只认整数
EOMONTH(日期, 2.9)等价于EOMONTH(日期, 2),不会四舍五入。 -
格式化后为文本,不能直接计算 用
TEXT包裹后输出的是文本字符串,后续还要计算的话,用原始日期值计算,最后一步再格式化。
六、易混对比:EOMONTH vs EDATE
| 函数 | 核心逻辑 | 示例(开始日期:2026-01-15,偏移1个月) | 典型场景 |
|---|---|---|---|
EDATE |
对日偏移,几号进就几号出 | 返回 2026-02-15 |
账龄计算、到期日、对账日 |
EOMONTH |
月末偏移,永远返回当月最后一天 | 返回 2026-02-28 |
月末结转、期末报表、计提基准 |