我有数据存储在excel中我需要对数据进行排序

时间:2017-08-01 19:10:11

标签: excel

在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个产品。

1 个答案:

答案 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))` 

sumproductA1*B1A2*B2A3*B3A4*B4A5*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;

复制此公式会重新确定每行的等级,以便您进行排名和过滤。