根据单元格值,总计值中的前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列中的值。 我在你原来的c
到j
例子上伪造了更多的数据。
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
”,通过INDEX
和MATCH
查find基于Rank
Name-Id
,然后从Name-Id
获得左侧的字符。 对于TotalSum
只是做另一个类似的INDEX
和MATCH
得分。
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-Id
, Num1+Num2
和Rank
来自动构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
一个参数 – 可以位于工作簿中的任何位置。
现在让这个列自动填充,我们可以调整SUMPRODUCT
和RANK
的公式,以便通过检查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-Id
, Num1+Num2
和Rank
的新扩展范围,而不是前面示例中的硬编码范围。
更新了屏幕截图,指出与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}))
注意它也是数组公式。