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