在excel中,我将数据分为
Year Code Class Count
2001 RAI01 LNS 9
2001 RAI01 APRP 4
2001 RAI01 3
2002 RAI01 BPR 3
2002 RAI01 BRK 3
2003 RAI01 URE 3
2003 CFCOLLTXFT APRP 2
2003 CFCOLLTXFT BPR 2
2004 CFCOLLTXFT GRL 2
2004 CFCOLLTXFT HDS 2
2005 RAI HDS 2
我需要为该特定年份的特定客户找到前3个产品。
答案 0 :(得分:1)
这里真正的技巧是根据一个组对每一行进行排名。
您的排名由您的计数列(D列)决定。
您的小组由您的年份和代码(我认为)列(分别为A列和B列)决定。
您可以使用此粗略sumproduct()
公式根据每个组的计数获得排名(从1开始)。
所以要在每个年份和代码中获得排名,从1到任意,在此数据旁边的新列中:
=SUMPRODUCT(($A$2:$A$50=A2)*(B2=$B$2:$B$50)*(D2<$D$2:$D$50))+1
将其复制下来。现在,您可以在此自动筛选以显示排名小于4的所有行。您可以在Customer上对此进行排序,然后在Year中进行排序,您应该在每年/代码中有一个很好的前三名列表。
sumproduct的说明。
Sumproduct逐行进行并应用为每一行定义的数学运算。完成后,它会对结果进行求和。
例如,请使用以下工作表:
+---+---+---+
| | A | B |
+---+---+---+
| 1 | 1 | 1 |
| 2 | 1 | 4 |
| 3 | 2 | 2 |
| 4 | 4 | 1 |
| 5 | 1 | 2 |
+---+---+---+
`=SUMPRODUCT((A1:A5)*(B1:B5))`
此sumproduct
将A1*B1
,A2*B2
,A3*B3
,A4*B4
,A5*B5
,然后将这五个结果添加到您的身上一个号码。那是1 + 4 + 4 + 4 + 1 = 15
它也适用于条件/布尔语句返回,对于每个行/条件1或0(对于True和False,这是&#34;布尔&#34;值)。
作为示例,请使用以下工作表来保存库中的发布类型和计数:
+---+----------+---+
| | A | B |
+---+----------+---+
| 1 | Book | 1 |
| 2 | Magazine | 4 |
| 3 | Book | 2 |
| 4 | Comic | 1 |
| 5 | Pamphlet | 2 |
+---+----------+---+
=SUMPRODUCT((A1:A5="Book")*(B1:B5))
这将测试A1
是否是&#34; Book&#34;然后返回一个1或0,然后返回多个结果为B1。然后继续为范围中的每一行直到第5行。结果将是1 + 0 + 2 + 0 + 0 = 3.库中有3本书(它不是一个非常大的库)。
对于这个答案的副产品:
所以($A$2:$A$50=A2)
表示如果A2 = A2则返回1,如果A2&lt; A2,则返回0。它对A2到A50进行比较,将其与A2
进行比较,返回1或0.
(B2=$B$2:$B$50)
将测试每个单元格B2到B50以查看它是否等于B2
并为每次测试返回1或0。
(D2<$D$2:$D$50)
也是如此,但它正在测试计数是否小于当前的细胞计数。
所以...基本上这就是说&#34;对于所有第1行到第50行,测试以查找在A列和B列中具有相同值的所有其他行,并且计数小于此行计数。计算符合该条件的所有行,并向其中添加1。这是该组中该行的排名。&#34;
复制此公式会重新确定每行的等级,以便您进行排名和过滤。