我有数据存储在Excel中,我需要sorting的数据

在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 

在那里,我需要find特定年份的特定客户的前三名产品。

这里真正的技巧是根据一个组排名每一行。

您的排名取决于您的“计数”列(D列)。

你的小组是由你的年份和代码(我认为)决定的(列A和B分别)。

你可以使用这个粗糙的sumproduct()公式得到一个排名(从1开始),基于每个组的计数。

因此,要在每个年份和代码的排名从1到任何数字,在这个数据旁边的新列:

 =SUMPRODUCT(($A$2:$A$50=A2)*(B2=$B$2:$B$50)*(D2<$D$2:$D$50))+1 

并复制下来。 现在,您可以使用AutoFilter来显示排名小于4的所有行。您可以在Customer上对此进行sorting,然后select年份,并且每年/代码中应该有一个很好的前3列表。


产品的说明。

Sumproduct逐行进行,并应用为每行定义的math运算。 当它完成时,总和结果。

作为一个例子,采取以下工作表:

 +---+---+---+ | | A | B | +---+---+---+ | 1 | 1 | 1 | | 2 | 1 | 4 | | 3 | 2 | 2 | | 4 | 4 | 1 | | 5 | 1 | 2 | +---+---+---+ `=SUMPRODUCT((A1:A5)*(B1:B5))` 

这个sumproduct将取A1*B1A2*B2A3*B3A4*B4A5*B5 ,然后sumproduct五个结果加起来给你一个数字。 那就是1 + 4 + 4 + 4 + 1 = 15

对于每行/条件a 1或0(对于True和False,这是一个“布尔”值),它也将在条件/布尔语句返回。

作为一个例子,采取下面的工作表,保存在一个库和一个计数发布的types:

 +---+----------+---+ | | A | B | +---+----------+---+ | 1 | Book | 1 | | 2 | Magazine | 4 | | 3 | Book | 2 | | 4 | Comic | 1 | | 5 | Pamphlet | 2 | +---+----------+---+ =SUMPRODUCT((A1:A5="Book")*(B1:B5)) 

这将testing看是否A1是“Book”并返回一个1或0,然后返回多个结果是B1。 然后继续到第5行的范围内的每一行。结果将是1 + 0 + 2 + 0 + 0 = 3.图书馆有3本书(这不是一个很大的图书馆)。

对于这个答案的副产品:

所以($A$2:$A$50=A2)表示如果A2 = A2则返回1,如果A2 <> A2则返回0。 它将A2到A50与A2进行比较,返回1或0。

(B2=$B$2:$B$50)将通过B50testing每个单元格B2,看它是否等于B2并为每个testing返回1或0。

(D2<$D$2:$D$50)也是如此,但它正在testing计数是否小于当前的单元数。

所以…本质上这是说:“对于所有行1到50,testingfind列A和B中具有相同值的所有其他行,并有一个计数less于此行计数所有这些行数符合这个标准,并加1,这是该组内的这一排的排名。

通过复制这个公式,它可以重新确定每行的排名,让您排名和筛选。