创建多个条件,多行“IF和MIN”条件公式

时间:2017-02-23 02:33:20

标签: arrays excel if-statement excel-formula conditional

我有一个包含排水程序(管道和坑)值的电子表格,我想创建一个公式,找到Pit名称,然后找到连接到该坑的管道下游端的最小值。

我可以使用数组 - {=MIN(IF('ArcGIS Pipes'!$C$2:$C$100=A3,'ArcGIS Pipes'!$F$2:$F$100))}。但是,有时坑只连接到上游端,这意味着它位于U/S IL (m)下的不同列中。如果是这种情况,那么我想要那个值,但目前我不得不首先运行D/S IL (m)列公式,如果没有返回任何内容,那么我必须手动将null单元格更改为{{ 1}}检查{=MIN(IF('ArcGIS Pipes'!$B$2:$B$100=A2,'ArcGIS Pipes'!$E$2:$E$100))}列。完成后,任何剩余的U/S IL (m)值都是不连接到任何管道的凹坑,并且它们手动被赋予空值。

所以,我想做的就是拥有一个能够完成上述所有工作的公式,而不必经历任何事情。总之,我希望公式首先检查一列中的最小下游值,如果没有返回任何内容,那么我希望它检查另一列中的最小上游值,最后如果没有返回任何内容,那么我想要返回一个空值。

我已经摆弄了嵌套的IF和子数组,但只是得到一个错误或者返回了null。我试过的让我FALSE的公式是FALSE。我知道我错过了一些东西,但我开始绕圈子去了!

Screengrab - left table is the source table, right is the results table

enter image description here

1 个答案:

答案 0 :(得分:1)

这可能是您正在寻找的数组公式¹。在K2中,

=IF(ISNUMBER(MATCH(H2,C:C, 0)),
      AGGREGATE(15, 6, F$2:INDEX(F:F, MATCH("zzz",C:C ))/(C$2:INDEX(C:C, MATCH("zzz",C:C ))=H2), 1),
   IF(ISNUMBER(MATCH(H2,B:B, 0)),
      AGGREGATE(15, 6, E$2:INDEX(E:E, MATCH("zzz",B:B ))/(B$2:INDEX(B:B, MATCH("zzz",B:B ))=H2), 1),
      "no match"))

根据需要填写。

enter image description here

¹数组公式需要用 Ctrl + Shift + Enter↵完成。如果输入正确,Excel将公式包装在大括号中(例如 {} )。您不要自己键入大括号。一旦正确进入第一个单元格,就可以像任何其他公式一样向下或向右填充或复制它们。尝试并减少对更接近表示实际数据范围的范围的全列引用。数组公式以对数方式计算计算周期,因此将参考范围缩小到最小值是一种好习惯。有关详细信息,请参阅Guidelines and examples of array formulas