Excel - 查找列表每个成员的第 n 个最大值

Excel - 查找列表每个成员的第 n 个最大值

我有一堆由不同站点的值组成的数据,如下所示:

Site  Value
A      1
A      2
A      5
A      7
B      5
B      7
B      11

每个站点的值数量可能有所不同。我想提取每个站点的第 n 个最大值,例如,对于 n=2

Site  Value
A     2
B     7

有没有比在每个站点之间手动添加几个空白行并使用 LARGE 更简单的方法?

答案1

您可以将 LARGE 封装在 IF 中,并创建一个数组公式来从子集中获取第 n 个最大值。单个公式适用于每个站点。

在此处输入图片描述

A 列和 B 列是您的数据。在 D 列中创建一个站点主列表,并在 E 列中输入第 n 个最大限定符值(例如 2、3、4,根据需要)。现在在 F 中输入公式

=LARGE(IF($A$1:$A$7=D1,$B$1:$B$7,""),E1)

按 CTRL + SHIFT + ENTER 将其作为数组公式括起来并向下拖动。

答案2

相关我在另一个问题上的回答

您可以使用这些公式的组合来构建数组或范围

INDEX( value_range, MATCH( lookup_value, lookup_range, 0 ))为范围的开始

INDEX( value_range, MATCH( lookup_value, lookup_range, 1 ))范围的结束

因此,在您的问题中,您可以结合使用LARGE

=LARGE(INDIRECT(
   INDEX($B$1:$B$7, MATCH($C1, $A$1:$A$7, 0))&":"
   INDEX($B$1:$B$7, MATCH($C1, $A$1:$A$7, 1))
   ), 2)

笔记:您需要对网站进行排序。升序或降序都可以,只要确保网站分组即可。

其中,columnB指的是您的值列表,columnA指的是您的站点列表。

$C1指的是您想要获取第 n 个值的站点(在您的示例中应该是“A”)

相关内容