Excel 将if与Today()和cutom date单元格一起使用通常会返回True?

Excel 将if与Today()和cutom date单元格一起使用通常会返回True?,excel,date,excel-formula,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日…….保修您需要打开自动计算:选项>公式>工作簿计算>自动 也可以

我收到了一份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日…….保修

您需要打开自动计算:选项>公式>工作簿计算>自动

也可以在工具栏的“公式”选项卡中启用它:

听起来工作表中的数据可能有误-您是否检查了它的值并将其与今天的值进行了比较?在单元格上使用value函数可能是最简单的


在一些系统使用的高级选项的内部有一个“1904”日期设置,即日期从一个不同的点开始,而这个点优于通常的点。这意味着今天与今天不符-您描述的情况是可能的。

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

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

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

=IF(U9="";"No Date";IF(DATEVALUE(U9)>TODAY();"warranty";"expired"))
只有当您的所有日期都被格式化为文本时,这才有效

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

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

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

一种可能的解决方法是使用此公式从格式为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)))

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

提供指向示例工作表的链接感谢您的答案,但两种解决方案均无效,请使用日期值返回值错误值!,和“文本到列”不会影响原始公式结果。更改日期单元格的数字格式时会发生什么情况?单元格值是否包含除2011年7月8日以外的任何其他字符?否不包含除2011年7月8日以外的任何其他字符?我怀疑预设了一些不可见的字符。=CODEU9的结果是什么?最初这个选项没有被选中,并且在检查后仍然是一样的。这只是一种预感-我有一个类似的问题由此引起。您已经说过,通过使用指向单元格的值,您会得到一个错误吗?这可以解释这个问题,因为日期不是数字。如果你“重视调查”——你有数字吗?
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)))