【问题标题】:Find Minimum Value Based on 2 Criteria (Excel 2013)根据 2 个标准查找最小值 (Excel 2013)
【发布时间】:2015-01-30 20:34:33
【问题描述】:

寻找基于两组标准的列中的最大值

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

我尝试过使用这样的数组公式,但它似乎不起作用/运行起来内存很重: =MIN(IF(AND(N:N=A2,Y:Y

有没有更简单的方法?或者可能是一个可以工作的 UDF?

感谢您的帮助!

【问题讨论】:

    标签: excel vba


    【解决方案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)

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

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

    【讨论】:

    • 嗨,巴里——第一次看到聚合函数。你能解释一下它是如何工作的吗?
    • AGGREGATE 有点像 SUBTOTAL 函数 - 第一个数字表示“函数”,例如SUM、AVERAGE、MIN 等。虽然有一个 MIN 选项,但你不能在条件下使用它(因为它不接受数组)所以 15 代表 SMALL 函数,6 告诉 Excel 忽略错误,然后是 M:M/(N:N=A2)/(Y:Y<=318) 部分创建一个返回错误或数字的数组(仅在满足您的条件时)
    【解决方案2】:

    试试这个并调整范围以适应。尽量不要使用整列引用:

    =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

    【讨论】:

      【解决方案3】:

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

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

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

      =and(A1=N1,Y1<318)
      

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

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

      =if(AA1,M1,"")
      

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

      最后,尽你所能:

      =MIN(AB:AB)
      

      应该给你答案。

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

      【讨论】:

        猜你喜欢
        • 2021-12-31
        • 1970-01-01
        • 2020-03-21
        • 2017-12-26
        • 1970-01-01
        • 2015-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多