为什么1900年的Excel工作日错了?

Modified on: Thu, 08 Nov 2018 08:00:02 +0800

此问题基于AdamV他的回答 如何在Excel中的单元格中输入日期名称?

当A1的值为2009-08-01时,则:

  • =WEEKDAY(A1)将获取7
  • =TEXT(7, "dddd")将获得Saturday
  • =TEXT(7,"dddd, yyyy-mm-dd")将获得Saturday, 1900-01-07
  • =TEXT(1,"dddd, yyyy-mm-dd")将获得Sunday, 1900-01-01
  • =TEXT("1900-01-01","dddd, yyyy-mm-dd")也将获得Sunday, 1900-01-01

最后两个错误:1900年1月1日实际上是星期一
各种消息来源似乎证实:

我错过了什么?为什么Excel这样做错了?

最佳答案

如Microsoft KB 214058中所述:

  

1900年3月1日之前的星期几在Excel中不正确

  
  

更多信息

  
  

最初创建Microsoft Excel中的日期系统时,它的设计与其他电子表格程序使用的日期系统完全兼容。

  
  

但是,在此日期系统中,1900年被错误地解释为闰年。因为在1900年没有2月29日(“闰日”),所以1900年3月1日(“闰日”之后)之前的任何日期的星期几都没有正确计算。

“其他电子表格程序”是指Lotus 1-2-3当时很受欢迎,并错误地认为1900年是闰年。 KB 214326中对此进行了更详细的说明:

  

Excel 2000错误地假定1900年是闰年

  
  

更多信息

  
  

当莲花1-2-3首次发布时,该计划假设1900年是闰年,尽管它实际上不是闰年。这使程序更容易处理闰年,并且对Lotus 1-2-3中的几乎所有日期计算都没有造成任何损害。

  
  

当Microsoft Multiplan和Microsoft Excel发布时,他们还认为1900年是闰年。此假设允许Microsoft Multiplan和Microsoft Excel使用Lotus 1-2-3使用的相同序列日期系统,并提供与Lotus 1-2-3的更高兼容性。将1900年视为闰年也使用户更容易将工作表从一个程序移动到另一个程序。

  
  

虽然技术上可以纠正这种行为,以便当前版本的Microsoft Excel不会假设1900是闰年,但这样做的缺点超过了优势。

  
  

如果要纠正这种行为,会出现许多问题,包括:

  
  

      
  • 当前Microsoft Excel工作表和其他文档中的几乎所有日期都将减少一天。纠正这种转变需要花费大量的时间和精力,特别是在使用日期的公式中。
  •   
  • 某些功能(如WEEKDAY功能)会返回不同的值;这可能会导致工作表中的公式无法正常工作。
  •   
  • 更正此行为会破坏Microsoft Excel与使用日期的其他程序之间的序列日期兼容性。
  •   

  
  

如果行为未得到纠正,则只会出现一个问题:

  
  

      
  • WEEKDAY函数返回1900年3月1日之前日期的错误值。由于大多数用户在1900年3月1日之前不使用日期,因此这个问题很少见。
  •   
作者:grawity

相关问答

添加新评论