【问题标题】:Return smallest unique value that meets criteria返回满足条件的最小唯一值
【发布时间】:2017-10-10 05:41:40
【问题描述】:

我需要一个公式来将满足特定条件的最小唯一值返回到第 N 项。请看图:

目标是在单元格 D2:G31 中有一个公式,它将按从小到大的顺序返回 B2:B31 的值,其中包含 D1:G1 中的值。

例如,单元格 D2 将返回 3,因为它是“1”组中的最小值。单元格 D3 将返回 12,单元格 E2 将返回 1,等等...

我尝试使用下面的代码,但它只返回 TRUE,我不确定如何实现我的目标,但也许这会帮助您理解。

=AND(VLOOKUP(1,A2:B31,2),SMALL(B2:B31,1))

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

    AGGREGATE 函数提供了一种解决此类问题的好方法,无需数组公式。我模拟了一个类似的问题,并在单元格E2 中使用了以下公式(上下拖动)

    =AGGREGATE(15,6,$B$1:$B$12/($A$1:$A$12=E$1),ROW(1:1))
    

    请参阅 this answer from Jeeped 以更好地解释其工作原理以及具有多个标准的示例。

    【讨论】:

    • 我在理解此功能时遇到问题。我试过以下没有运气。
    • =AGGREGATE(15,6,$B$2:$B$31,1,$A$2:$A$31=$E$1)
    • @KevinP。试试这个=AGGREGATE(15,6,$B$2:$B$31/($A$2:$A$31=E$1),ROW(1:1))
    • 效果很好!谢谢!我想我明白现在发生了什么。
    【解决方案2】:

    这个数组公式(同时单击 Ctrl + Shift + Enter)应该适合你。

    =IFERROR(SMALL(IF($A$2:$A$31=D$1,$B$2:$B$31,""),ROW()-ROW(D$1)),"")
    

    【讨论】:

    • 我说得太早了,这对我的例子很有效,但是由于某种原因,当我将它转换到我的实际应用程序时,它遗漏了一些数字。没有明显的关系,但它只满足了我第一行中 14 个数字中的 10 个,以及我第二行中 6 个中的 2 个。奇数。
    • 确保你输入了Ctrl + Shift + Enter的公式。
    • 我愿意,我正在尝试了解您代码的最后一部分来解决此问题。它是在数学上从计算值中减去我正在寻找的值?
    • 由于您要从最小值返回值,SMALL 函数的第二个参数是您要返回的小值的指示符。第一个小数是 1,第二个是 2,依此类推。 ROW()-ROW(D$1) 是返回 1、2、3 等的数学运算,以便 SMALL 函数根据行的位置知道要返回哪一个。 ROW() 基本上是指向当前行,在这个例子中ROW(D$1) 是1。因此,在第 5 行,您将拥有 (5 - 1) = 4,这将返回第 4 个小值。
    • 啊,这是有道理的,这就是我的问题所在。在我的实际应用程序中,我从 B13 到 G62 开始,源(1 所在的位置)为 9 美元。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 2020-09-08
    • 1970-01-01
    相关资源
    最近更新 更多