使用数组公式 Excel 中的条件最大值 - 如何忽略空白行

Conditional Maximum in Excel using Array Formulae - how to ignore Blank Rows

Stack Overflow 上有很多关于在 Excel 中执行条件 MIN 和 MAX 的问题 例如Excel: Find min/max values in a column among those matched from another column

但是,我认为下面的问题没有被涵盖。

通常 MIN 和 MAX 函数会忽略空白行,但似乎如果与条件数组公式结合使用则它们不会忽略。

例如

如果我输入数组公式=MAX(IF(A1:A8="A",B1:B8))然后我得到零,当我真的想看到-1时,因为在所有非空白'A'行中,最大值是-1。

我认为下面的数组公式可以工作 =MAX(IF(AND(A1:A8="A",B1:B8<>""),B1:B8)) 但它总是 returns 零

您可以在 if 中测试空白,如果找到则替换为适当的值。

数组公式 =MAX(IF(A1:A8="a",IF(ISBLANK(B1:B8),-999,B1:B8))) 会将值 -999 替换为任何空白单元格,让您找到最大值 - 根据您的数字有多低更改 -999

你差一点就成功了!但是,在数组公式中,您不能如此直接地复制 "AND" 构造,本质上是因为 AND 函数中的 return 始终是单个值,而不是数组。

因此,您的尝试:

=MAX(IF(AND(A1:A8="A",B1:B8<>""),B1:B8))

最初会正确解析为(使用您发布的值):

=MAX(IF(AND({TRUE;FALSE;TRUE;FALSE;TRUE;FALSE;TRUE;FALSE},{TRUE;TRUE;FALSE;TRUE;FALSE;TRUE;TRUE;FALSE}),B1:B8))

虽然 AND 函数随后会查看这两个布尔数组 TRUE/FALSE returns 和 return 一个单一值,即 FALSE(因为至少有一个 FALSE在这 16 个条目中)。

正确的语法是:

=MAX(IF(A1:A8="A",IF(B1:B8<>"",B1:B8)))

此致