=IF(D6="Closed", IF(N6="T1",J6, IF(O6="T1",M6, IF(NOT(D6="Closed", IF(N6="T1",J6, IF(O6="T1", SUM(TODAY()-I6,""))))))))
我需要在这里做三件事:
首先,确定 d6 是“已关闭”还是其他。
如果是“已关闭”,那么我想看看 n6 是否 = “T1”,如果是,则返回 j6(数字),如果不是,则查看 o6(字母 o)以查看它是否为“T1”,如果是,则返回 m6。如果 d6 不是“已关闭”,那么我想看看 n6 是否 = “T1”,如果是,则返回 j6,如果不是,则查看 o6 以查看它是否为“T1”,如果是,则计算 today() 和 i6 之间的差值,如果这些都不成立,则放置一个空格(“”)。
答案1
答案2
要执行文本描述所要求的操作,以下任一公式均可:
=IF(N6="T1",J6,
IF(AND(D6="Closed",O6="T1"),M6,
IF(AND(D6<>"Closed",O6="T1"),SUM(TODAY()-I6),"")))
或者
=IF(N6="T1",J6,
IFS( AND(D6="Closed", O6="T1"), M6,
AND(D6<>"Closed", O6="T1"), SUM(TODAY()-I6),
TRUE, ""))
第一种是标准IF()
方法,第二种是IFS()
方法。该方法的优点IFS()
是,如果您的条件更复杂(或只是“更多”),那么与标准方法相比,将其布局起来以方便维护会更容易,IF()
因为上述格式化版本中的每一行都是“独立”的(顺序除外),与其他行无关,这使得编辑或添加/删除条件更容易理解。
注意:您想要比较 的每条条件路径(即:无论 D6 结果如何)N6="T1"
,因此它应该只是整体 中的第一个条件IF()
。这大大简化了后续操作。无论哪种方式,通过使用该AND()
方法,您都可以简化 O6 的测试。由于 O6 针对相同的东西进行测试,您也可以“翻转”方法并测试 ,O6<>"T1
该部分如下所示:
IF(O6<>"T1, "", IF(D6="Closed", M6, SUM(TODAY()-I6) )
如果失败则返回测试,""
如果失败则返回,并且只有当它确实等于“T1”时才会测试一个 D6 条件,并给出指示的任何结果。
重点在于,寻找诸如 N6 测试的控制性质之类的东西可以大大简化公式。任何简化都有好处,例如响应速度更快,尽管这主要是过去的问题,但主要好处围绕着两件大事:将来更容易维护公式,因为它更容易理解,而且通常更容易适应新条件,而且,例如今天 (!),它不太可能永远不起作用,因为“为什么不起作用?”隐藏在复杂的公式中。