根据2个标准查找最小值(Excel 2013)

时间:2015-01-30 20:34:33

标签: excel vba

根据两组标准

查找列中的最大值

所以逻辑是:找到M列中的最小值,其中A列中的值与列N匹配,而Y列中的值小于318。

我尝试过使用像这样的数组公式,但它似乎没有工作/是要运行的内存很重: = MIN(IF(AND(N:N = A2,Y:Y< = 318),M:M))

有更简单的方法吗?或者也许是一个可行的UDF?

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

您不能在这些类型的公式中使用AND,因为它只返回单个值而不是所需的数组。

以下是三种可能的工作版本:

1。)使用*来模拟AND

=MIN(IF((N:N=A2)*(Y:Y<=318),M:M))

使用 CTRL + SHIFT + ENTER确认

2.。)使用多个嵌套的IF

=MIN(IF(N:N=A2,IF(Y:Y<=318,M:M)))

使用 CTRL + SHIFT + ENTER确认

3.)使用AGGREGATE功能

=AGGREGATE(15,6,M:M/(N:N=A2)/(Y:Y<=318),1)

这种方法的优点是你不需要“数组输入”,它可以忽略数据中的任何错误

无论哪种方式,最好减少范围大小,如果可以的话,因为整列可能会很慢

答案 1 :(得分:0)

尝试尝试并调整范围以适应。尽量不要使用整列参考:

=SMALL(INDEX(($N$2:$N$101=A2)*($Y$2:$Y$101<=318)*$M$2:$M$101,),1+ROWS($M$2:$M$101)-COUNTIFS($N$2:$N$101,A2,$Y$2:$Y$101,"<=318"))

如果您使用整列来添加新数据,请考虑使用Dynamic Named Ranges代替

答案 2 :(得分:0)

当事情变得复杂时,我通常会将其分解并在单独的列中设置更小/更简单的公式。

换句话说,您在A到Y列中有数据吗?

所以让我们在AA栏中创建一个公式: 1)识别Col A中的值何时匹配col N,并且col y中的值与col Y <1。 318

=and(A1=N1,Y1<318)

2)将AA1复制到数据的所有行。

3)现在我们有条件解决..因为有一个SUMIF和COUNTIF,但没有MINIF ..我们必须自己构建。首先是IF: 在AB1栏中:

=if(AA1,M1,"")

将其复制到您的所有数据中。

最后,做你的分钟:

=MIN(AB:AB)

应该给你答案。

你可能可能将前两个拼接在一起,但同样,建立一个像这样的复杂公式,简单地构建它,首先,;)