使用if with Today()和cutom日期单元格通常返回True?

时间:2015-05-06 08:27:08

标签: excel date excel-formula

我收到的excel表格中的日期在U栏(2009年7月8日)。

我将单元格格式更改为自定义日期(mmm d,yyyy)

现在在第五栏中,我在下面添加了if语句

=IF(U9="";"No Date";IF(U9>TODAY();"warranty";"expired"))

我的问题是:为什么所有的值都作为“保修”返回到U列中的日期?

2016年5月10日.....保修

2011年7月8日.........保修

2017年1月1日........保修

2011年7月23日........保修

3 个答案:

答案 0 :(得分:0)

您需要启用自动计算:
选项>公式>工作簿计算>自动
enter image description here


或者您可以在工具栏的公式选项卡中打开它:
enter image description here

答案 1 :(得分:0)

听起来表格中的数据可能有误 - 你检查了它的价值并将其与今天的价值进行了比较吗? (使用单元格上的值函数可能最简单)

有一个' 1904'日期设置在一些系统使用的选项(在高级)的深处,其中日期开始于Excel通常的不同点。这意味着今天今天不匹配 - 你所描述的情况是可能的。

答案 2 :(得分:0)

您收到的日期可能已格式化为文字。在这种情况下,更改单元格格式不会将其转换为日期,并且某些公式和表达式会将其视为文本而不是日期值。

要验证这一点,请尝试更改其中一个计算错误的日期单元格的日期格式为其他日期格式或数字,您将看到没有效果。

一个解决方案是将DATEVALUE()函数添加到公式中:

=IF(U9="";"No Date";IF(DATEVALUE(U9)>TODAY();"warranty";"expired"))

仅当您的所有日期都被格式化为文本时,此功能才有效。

另一种解决方案是从“数据”菜单运行文本到列。此过程具有转换数据类型的副作用。

  1. 选择日期列并运行文本到列。
  2. 选择“分隔”,然后单击“下一步”。
  3. 删除所有选定的分隔符,然后单击“下一步”。
  4. 您可以选择常规或日期,然后单击完成。
  5. 之后你的原始公式应该正常工作。

    增加:

    这似乎不是典型问题,可能与机器区域设置和日期格式识别有关。

    可能的解决方法是使用此公式从格式为MMM d, yyyy的日期文本中检索正确的日期值:

    =DATE(RIGHT(U9,4),
       MATCH(LEFT(U9,3),
         {"Jan","Feb","Mar","April","May","jun","Jul","Aug","Sep","Oct","Nov","Dec"}
         ,0),
      NUMBERVALUE(MID(U9,5,2)))
    

    轻松复制:

    DATE(RIGHT(U9,4),MATCH(LEFT(U9,3),{"Jan","Feb","Mar","April","May","jun","Jul","Aug","Sep","Oct","Nov","Dec"},0),NUMBERVALUE(MID(U9,5,2)))
    

    用此公式替换原始公式的U9部分。