当数字重复时,你怎么在数组中找到第n个最小数字?

时间:2016-01-11 18:36:04

标签: arrays excel

我试图在此列表中找到第二低的成本。显然,这是547美元,但是当我把公式放入:= SMALL(F2:F31,2)时,我得到488.00美元,我猜这是因为$ 488重复了很多次,所以它是第二个数字数字列表是最小的?

我应该使用什么公式来获得第二个最小的数字,尽管重复?table

3 个答案:

答案 0 :(得分:2)

这是为了什么目的?最终的结果?您是否寻求自动化或这是adhoc?

如果这是adhoc,你可以这样做:

1. copy column with numbers
2. Paste copied column into new sheet
3. Use Remove Duplicates functionality (Data tab) on this column to remove repetitions
4. Use your formula

此外,您可以使用以下公式执行此操作:

=SMALL(F2:F31, COUNTIF(F2:F31, MIN(F2:F31)) + 1)

答案 1 :(得分:0)

只要您只需要第二个最小的数字,并且您只有2个数字的重要影响,您可以相当有效地执行此操作,而无需创建其他数据数组或使用数组公式,只要您可以重新订购从最大到最小,而不是从最小到最大。

首先,找到最小的数字,简单地说:

=MIN(F:F)

然后,从该金额中减去1便士。我们现在可以使用价格正确的规则搜索来找到最接近的数字,利用MATCH函数的下一个最佳特征,如下所示:

=INDEX(F:F,MATCH(MIN(F:F)+0.01,F:F,-1))

这将采用F列中的最小数字,并为其添加.01。使用-1作为MIN函数中的第3个参数会强制MIN接受下一个最佳替代,如果此数量不完全匹配。

答案 2 :(得分:0)

只因为我根据你的last post计算我们就是这样。正如我在那篇文章中所说的那样,我会列出你所有州和郡的独特名单。

![enter image description here

然后构建@Andrew公式,该公式应该是标记为正确的公式,其中COUNTIFS()作为SMALL()中的k值:

=SMALL(IF(A2=DATA!A:A,IF(B2=DATA!B:B,DATA!F:F)),COUNTIFS(DATA!A:A,A2,DATA!B:B,B2,DATA!F:F,MIN(IF(A2=DATA!A:A,IF(B2=DATA!B:B,DATA!F:F))))+1)

这将为您提供第二个值的清晰列表。

然后找到与报价一起使用的保险公司:

=INDEX(DATA!E:E,MATCH(SMALL(IF(A2=DATA!A:A,IF(B2=DATA!B:B,DATA!F:F)),COUNTIFS(DATA!A:A,A2,DATA!B:B,B2,DATA!F:F,MIN(IF(A2=DATA!A:A,IF(B2=DATA!B:B,DATA!F:F))))+1),IF(A2=DATA!A:A,IF(B2=DATA!B:B,DATA!F:F)),0))

将它们放在第二行。这些都是数组公式,需要使用ctrl-shift-enter确认。然后可以根据需要将它们复制下来。