根据单元格值,总计值中的前5个名称

我有一个excel这样的表:

ABCD
Name Num1 Num2 ID
a 10 20 1
a 20 40 1
b 30 50 2
b 50 10 1
a 10 40 2
b 20 30 1
...

我怎样才能find前5名的ID = 1与最高和Num1和Num2。

我想展示的是这样的:

No. TopName TotalSum
1. b 110
2. a 90
..等等

我知道如何用这个公式SUMIF(D$2:D$1048576,1,B$2:C$1048576)将所有ID = 1的数字相加,但是不知道如何find最高的数字,然后求和名字…
请注意,我有200k +行的数据。

您可以通过两个步骤使用公式完成此操作:

步骤1

准备一系列结果,以便在每个ID列中有效应用filter:

 F | G | H Name-Id | Num1+Num2 | Rank a1 | 150 | 5 b1 | 190 | 2 c1 | 140 | 6 d1 | 110 | 10 e1 | 120 | 8 f1 | 120 | 9 g1 | 140 | 7 h1 | 160 | 4 i1 | 180 | 3 j1 | 200 | 1 

其中Name-Id是A列中唯一值的串联加上您想要testing的D列中的值。 我在你原来的cj例子上伪造了更多的数据。

Num1+Num2的计算方法如下:

 =SUMPRODUCT($B$2:$B$33+$C$2:$C$33,--($A$2:$A$33=LEFT($F2,1)),--($D$2:$D$33=VALUE(RIGHT($F2,1)))) 

那是:

  • Num1范围加Num2范围,这是你想排名的总和

  • 按列F的左手字符按数字0和1进行重复: Name-Id匹配列A: Name

  • 按照列F的右侧字符以0和1的数组进行重复: Name-Id匹配列ID

Rank由以下计算:

 =RANK(G2,$G$2:$G$11,0)+COUNTIF($G$2:G2,G2)-1 

哪种方法可以将RANK的输出转换为唯一的排名值。

第2步

build立一个“ Rank ”,通过INDEXMATCH查find基于Rank Name-Id ,然后从Name-Id获得左侧的字符。 对于TotalSum只是做另一个类似的INDEXMATCH得分。

 J | K | L Rank | Name | TotalSum 1 | j | 200 2 | b | 190 3 | i | 180 4 | h | 160 5 | a | 150 

K列中的公式是:

 =LEFT(INDEX($F$2:$F$11,MATCH(J2,$H$2:$H$11,0)),1) 

而L列的公式是:

 =INDEX($G$2:$G$11,MATCH(J2,$H$2:$H$11,0)) 

在这里输入图像说明

编辑

给定OP的大数据集(200k +行),您可能需要使用Name-IdNum1+Num2Rank来自动构build表。 下面的方法是这样做的,但在表中留下空白。 尽pipe如此,这并不妨碍“排行榜”的build设。

使用标准方法查找范围(已sorting或未sorting)中的值的第一个实例:

 =IF(COUNTIF(A$3:A3,A3)=1,A3,"") 

我们可以扩展到连接到这个ID

 =IF(COUNTIF(A$3:A3,A3)=1,A3&$G$1,"") 

请参阅下面的屏幕快照,其中ID现在是G1一个参数 – 可以位于工作簿中的任何位置。

现在让这个列自动填充,我们可以调整SUMPRODUCTRANK的公式,以便通过检查Name-Id不是空白的IF语句来包装:

SUMPRODUCT公式:

 =IF($F3<>"",SUMPRODUCT($B$3:$B$34+$C$3:$C$34,--($A$3:$A$34=LEFT($F3,1)),--($D$3:$D$34=VALUE(RIGHT($F3,1)))),"") 

RANK公式:

 =IF(G3<>"",RANK(G3,$G$3:$G$34,0)+COUNTIF($G$3:G3,G3)-1,"") 

Num1+Num2公式保持不变,只是需要覆盖Name-IdNum1+Num2Rank的新扩展范围,而不是前面示例中的硬编码范围。

更新了屏幕截图,指出与ID连接的新COUNTIF公式以自动生成Name-Id对列:

在这里输入图像说明

HTH

我认为你应该使用枢轴表

如果你想find最高价值,最简单的是最大值(B2:B20)。

如果你想find名称携带最高值,那么,= Vlookup(最大(B2:B20),A2:D20,1,假)。

如果您想要顶级名称考虑值,=大(B2:B20,行(1:5))

拖到5行。

注意这是一个数组公式。

如果你想总结前5名的价值,

=总和(大(B2:B20,{1,2,3,4,5}))

注意它也是数组公式。