Excel日期计算和比较未返回预期结果

时间:2019-12-16 15:30:13

标签: excel

项目计划在Excel中。目标是确定状态字段

我知道这可能不是最有效的方法。我正在自动执行项目任务的“状态”。该函数包含嵌套的IF和AND组件。

O7 =相;项目分为“按时”,“有风险”和“加班”四个阶段,每个阶段都有变化

H7是计划的结束日期(Excel中的日期字段),将其与TODAY()进行比较以查看该值是否在函数中设置的参数之内。

这是函数:

=
IF(AND(O7=1,TODAY()-H7<=0),"On Time",
IF(AND(O7=1,0<TODAY()-H7<6),"At Risk",
IF(AND(O7=1,TODAY()-H7>5),"Overdue",
IF(AND(O7=2,TODAY()-H7<=0),"On Time",
IF(AND(O7=2,0<TODAY()-H7<8),"At Risk",
IF(AND(O7=2,TODAY()-H7>7),"Overdue",
IF(AND(O7=3,TODAY()-H7<=0),"On Time",
IF(AND(O7=3,0<TODAY()-H7<11),"At Risk",
IF(AND(O7=3,TODAY()-H7>10),"Overdue",
IF(AND(O7=4,TODAY()-H7<=0),"On Time",
IF(AND(O7=4,0<TODAY()-H7<21),"At Risk",
IF(AND(O7=4,TODAY()-H7>20),"Overdue"))))))))))))

问题出在这里

IF(AND(O7=1,0<TODAY()-H7<6),"At Risk",

当我确定TODAY()-H7 = 4时,我无法使单元格显示“处于危险中”。我是否缺少某种语法,从而阻止了这种中间情况?

从字面上看,遵循该模型或引入新方法的任何指导都将有所帮助!

1 个答案:

答案 0 :(得分:0)

我不知道如何开始,您似乎对if-else一无所知。如果if条件为false,则无需再次检查,例如:

IF(AND(O7=1,TODAY()-H7<=0),"On Time",
IF(AND(O7=1,0<TODAY()-H7<6),"At Risk",

在第二行中,差异已经是> 0,如果不是,则已经是“ On Time”。您不必专门检查它。 立即的解决方案是将其设置为(TODAY()-H7)<6。但是您也可以对该公式进行更多的格式设置。

IF(O7=1,IF((TODAY()-H7)<=0,"On Time",(TODAY()-H7)<6,"At Risk","Over Due"),
IF(O7=2,IF((TODAY()-H7)<=0,"On Time",(TODAY()-H7)<8,"At Risk","Over Due"),
IF(O7=3,IF((TODAY()-H7)<=0,"On Time",(TODAY()-H7)<11,"At Risk","Over Due"),
IF(O7=4,IF((TODAY()-H7)<=0,"On Time",(TODAY()-H7)<21,"At Risk","Over Due"),"N/A"))))

您甚至可以将时间(6,8,11,21)与O7值(1,2,3,4)存储在一起,因此可以使用它来制作更短的公式。