项目计划在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时,我无法使单元格显示“处于危险中”。我是否缺少某种语法,从而阻止了这种中间情况?
从字面上看,遵循该模型或引入新方法的任何指导都将有所帮助!
答案 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)存储在一起,因此可以使用它来制作更短的公式。