查找最大值、第 N 大值以及它之前的其他值?(忽略重复项)

查找最大值、第 N 大值以及它之前的其他值?(忽略重复项)

所以我有一列 A,如下所示:

I
15
0
3
15
M
8
0
8
21
Q
0
5
0
0

我可以找到最大值=MAX(A1:A100) 我可以找到最小值=小(A1:A100,1)

我如何找到最大的前一个和再前一个。我可以使用 Large 来调用第 N 个值,但是我如何知道函数计数了多少个 N 值,以便我可以知道它使用哪些位置来引用最后 3 个(最大的和前 2 个)?

忽略重复项 - 示例中最大的是 21,前一个是 15,再前一个是 8。如果我执行 =LARGE(A1:A100,3),它将返回 15,因为列中有两个。而我正在寻找 8 作为第三大值。

下面您将看到互联网上热心人士提供了数据透视表、数组公式解决方案,我终于能够做一个简单的公式了。

如果您坚持我们拥有一切,您可以为这项工作提供 vba,否则已经足够了。

答案1

使用数据透视表快速获取列表的去重版本(只需将您的列添加到行标签),然后在去重列表上使用LARGE和函数:SMALL

=LARGE(D4:D9,3)

数据透视表去重列表

如果你愿意,你可以通过删除累计和切换字段标题关闭,因此它只显示重复数据删除列表。

答案2

包含列中的数据A喜欢:

在此处输入图片描述

B1进入:

=MAX(A:A)

B2输入数组公式:

=MAX(IF(A$1:A$10<B1,A$1:A$10))

然后复制B2降低到您需要的程度。

数组公式Ctrl必须使用++而不是仅仅使用键Shift来输入。EnterEnter

在此处输入图片描述

答案3

在所有帮助的帮助下,我开始思考我是否可以做数据透视表所做的事情,然后我想到了这个:(甚至是我自己做的,哈哈)

=IF(COUNTIF($A$1:A1,A1)<=1,A1,"")

制作与感兴趣的数据平行的列可以解决这个问题。(例如粘贴在 C1 中并复制下来)

它提供了初始的重复数据删除列表,您可以以此为基础来处理大数据和小数据。作为一个简单的解决方案,它不应该干扰您在文档中可能进行的任何易变内容。而我自己可以不用 vba。如果有混合数据类型,任何意外转变都应该可以用 IFERROR 来控制。

答案4

@helena4 尝试这个数组公式

=LARGE(IF(A1:A15 < LARGE(A1:A15,1),A1:A15),3)

然后按Ctrl+Shift+Enter

它将忽略重复项。

相关内容