【问题标题】:date comparing formula returns wrong result for one specific date value日期比较公式返回一个特定日期值的错误结果
【发布时间】:2019-01-07 14:22:46
【问题描述】:

这对你们中的一些人来说可能很容易看到,但我很难找到解决方案。我有以下公式:

IF(
AND(TODAY()<=E34;ISBLANK(I34));"Not started";IF(
AND(TODAY()>E34;ISBLANK(I34));"Start delayed";IF(
AND(TODAY()>I34;TODAY()<=F34;ISBLANK(J34));"In progress";IF(
AND(TODAY()>F34;ISBLANK(J34));"Completion delayed";IF(
AND(TODAY()>J34);"Done";"ERROR")
))))

根据返回的值比较单元格 E34-F34 和 I34-J34 中的日期“未开始”、“开始延迟”、“进行中”、“完成延迟”、“完成”或“错误”。

E34 的日期为“01.06.2018”-F34 的日期为“31.07.2018”,I34 的日期为“01.06.2018”,而 J34 的日期为“31.07.2018”。公式返回“错误”,尽管它应该返回“完成”。

如果 F34 和 J34 的值为 30.07.2018 而不是 31.07.2018,则公式返回“完成”。 (它也应该为 31.07.2018 返回相同的“完成”值)

我附上我的情况图片。希望有人能帮忙

【问题讨论】:

  • 请使用markdown table generator 之类的工具插入数据,而不是图像。您可以将 excel 中的数据粘贴到工具中(有一个下拉选项),然后生成表格,将其复制,edit 到您的帖子中,突出显示表格并按 Ctrl + K。
  • 我怀疑您正在比较文本值,或者至少比较的一侧是文本。确保您正在比较实际日期值。如果 J34 是 2018 年 7 月 31 日,这与今天相同,那么不大于所以不会是真的。
  • 这取决于我把包括“今天”在内的公式。由于此公式是我从某人那里收到的公式,因此我无法发现错误。
  • This.... AND(TODAY()>J34);"Done";"ERROR") 不需要 AND,仅当日期大于 J34 时才计算为 Done。跨度>
  • 那么我应该如何编辑我的代码?你可以复制和编辑它吗?

标签: excel date excel-formula formula formulas


【解决方案1】:

我有点不清楚真正想要的条件是什么。如果有实际文本而不是我使用的日期:

=IF(TODAY()>1*SUBSTITUTE(J34;".";"/");"Done";IF(
AND(TODAY()<=1*SUBSTITUTE(E34;".";"/");ISBLANK(I34));"Not started";IF(
AND(TODAY()>1*SUBSTITUTE(E34;".";"/");ISBLANK(I34));"Start delayed";IF(
AND(TODAY()>1*SUBSTITUTE(I34;".";"/");TODAY()<=1*SUBSTITUTE(F34;".";"/");ISBLANK(J34));"In progress";IF(
AND(TODAY()>1*SUBSTITUTE(F34;".";"/");ISBLANK(J34));"Completion delayed";"ERROR")
))))

AND(TODAY()&gt;J34);"Done";"ERROR") 不需要AND,仅当日期大于 J34 时才计算为完成。我会将它移到前面并作为第一个条件进行测试。 2018 年 7 月 31 日不是 >TODAY()。今天是 2018 年 7 月 31 日,因此是相等的。

如果您的日期是实际日期,则不需要 SUBSTITUTE 部分。您可以使用 ISNUMBER 函数检查实际日期,例如如果单元格包含日期而不是文本字符串,ISNUMBER(E34) 将返回 True。

没有替代品

=IF(TODAY()>J34;"Done";IF(
AND(TODAY()<=E34;ISBLANK(I34));"Not started";IF(
AND(TODAY()>E34;ISBLANK(I34));"Start delayed";IF(
AND(TODAY()>I34;TODAY()<=F34;ISBLANK(J34));"In progress";IF(
AND(TODAY()>F34;ISBLANK(J34));"Completion delayed";"ERROR")
))))

如果仍然存在问题,我建议说明每个预期的测试条件并给出一些输入日期和预期输出。

您给出的错误示例得到了正确评估。

【讨论】:

  • 遗憾的是,这不起作用,问题是“今天的功能”。现在我看到我的公式显示为“错误”,因为今天的日期比单元格 J 中的实际完成日期早/相同,而不是晚于这个单元格
  • 原来就是这样。这就是我要说的。原来的条件是 TODAY()>J34);"Done";"ERROR"。那么 31/07/2018 > 31/07/2018 是错误的,因此错误未完成。由于没有空白,其他条件都评估为 False。我只是重写了命令,它变得更加明显。
猜你喜欢
  • 1970-01-01
  • 2012-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-27
  • 1970-01-01
  • 1970-01-01
  • 2015-06-16
相关资源
最近更新 更多