EOMONTH 函数可能不正确,如果日期是在二月

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 179545
本文已归档。它按“原样”提供,并且不再更新。
症状
如果您使用 EOMONTH 函数返回一个月的最后一天,函数可能会返回下个月的第一天。

例如对于 EOMONTH 函数可能会错误地返回 3/1/2100 (3 月 1 2100) 而不是 2/28/2100 (2 月 28 2100)。
原因
当日期由该 EOMONTH 返回函数符合下列条件时,就会出现此问题:
  • 在二月为日期。-并且-

  • 日期为纪元的年份不整除被 400,例如:
    2100、 2200年、 2300年、 2500年、 2600年、 2700年、 2900,3000
注: 如果日期为 1900年或 2000 年中不会发生此问题。
替代方法
因为 EOMONTH 函数应总是返回在该月的最后一个日期,您可以修改公式,以便它们中减去 1 从函数返回的 EOMONTH 如果日期不在该月的最后日期。这将强制函数返回正确的日期,例如:
a1: 1/1/2100
a2: =eomonth(a1,1)
在公式中单元格 A2 返回 3/1/2100年、 不正确的日期。 但是,如果您更改的公式
A1: 1/1/2100
A2: =IF(DAY(EOMONTH(A1,1))=1,EOMONTH(A1,1)-1,EOMONTH(A1,1))
该公式返回正确的日期 (2/28/2100),即使该日期内被 400 不整除的世纪每年的二月。

这是公式的工作原理:
如果该月的结束日期为 1,您可以重新计算月份的末尾,减去 1,,并返回日期。否则为重新计算月份的末尾,并返回该日期。
状态
Microsoft 已经确认这是在本文开头列出的 Microsoft 产品中的问题。在 Microsoft Excel 2000 中不会再出现此问题。
更多信息
EOMONTH 函数将包括在分析工具库,使您可以返回一个月中的最后一天的日期。例如对于如果要确定每月从今天的日期的六个月的最后一天,请使用以下公式:
=eomonth(today(),6)
如果今天是 1/13/98,则函数返回 7/31/98: 每月从今天的六个月的最后一天。

仅在 EOMONTH 函数返回一个日期的世纪年份,例如不是闰年的二月中时,会出现本文所述问题:
a1: 1/1/2000 b1: =eomonth(a1,1)
a2: 1/1/2100 b2: =eomonth(a2,1)
a3: 1/1/2200 b3: =eomonth(a3,1)
a4: 1/1/2300 b4: =eomonth(a4,1)
a5: 1/1/2400 b5: =eomonth(a5,1)
单元格 B1 和 B5 中的公式返回正确的结果 (2000/2/29 和 2/29/2400年) 由于日期是在被 400 整除的世纪年份。

单元格 B2,B3 和 B4 中的公式返回不正确结果 (3/1/2100,3/1/2200年 3/1/2300年) 由于日期是在被 400 不是整除的世纪年份。
XL97 y2k year2000 XL

警告:本文已自动翻译

属性

文章 ID:179545 - 上次审阅时间:10/07/2013 17:38:50 - 修订版本: 2.0

Microsoft Excel 97 标准版, Microsoft Excel 98 for Macintosh

  • kbnosurvey kbarchive kbmt kbbug kbpending KB179545 KbMtzh
反馈