在 Excel 中使用以下公式获取此函数的多个参数

在 Excel 中使用以下公式获取此函数的多个参数
=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 测试的控制性质之类的东西可以大大简化公式。任何简化都有好处,例如响应速度更快,尽管这主要是过去的问题,但主要好处围绕着两件大事:将来更容易维护公式,因为它更容易理解,而且通常更容易适应新条件,而且,例如今天 (!),它不太可能永远不起作用,因为“为什么不起作用?”隐藏在复杂的公式中。

相关内容