Excel:使用INDEX数组公式在列表中查找最小值和最大值

时间:2016-03-03 15:36:56

标签: excel excel-vba excel-formula vba

在excel中,我有一个名称列表,每个名称都带有与之关联的值。

我也有最小值和最大值。

我想使用数组公式来查找列表中所有在最小值和最大值之间的名称。

首先,我创建了一个数组公式,该公式可以找到值大于最小值的所有名称:

这在单元格D5中使用了以下公式(向下复制到D10):

    {=INDEX($A$1:$B$6,SMALL(IF($B$1:$B$6>=$E$1,ROW($B$1:$B$6)),ROW(1:1)),1)}

然后我尝试修改这个公式,在单元格F5中找到最小值和最大值之间的值的名称,如下所示:

    {=INDEX($A$1:$B$6,SMALL(IF(AND($B$1:$B$6>=$E$1,$B$1:$B$6<=$E$2),ROW($B$1:$B$6)),ROW(1:1)),1)}

但它不起作用,见下图:

我该如何解决这个问题?我需要使用VBA吗?

1 个答案:

答案 0 :(得分:3)

将数组公式更改为:

=INDEX($A$1:$B$6,SMALL(IF(($B$1:$B$6>=$E$1)*($B$1:$B$6<=$E$2),ROW($B$1:$B$6)),ROW(1:1)),1)

由于某种原因,数组公式不喜欢AndOr功能,但您可以使用* And+来执行此操作Or

这与TRUE / FALSE是布尔值的事实有关。因此False = 0且True = 1,所以当值介于1 * 1 = 1或True时。如果它大于或小于现存,那么它将是1 * 0 = 0或假。