我有数据存储在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*B1
, A2*B2
, A3*B3
, A4*B4
, A5*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,这是该组内的这一排的排名。
通过复制这个公式,它可以重新确定每行的排名,让您排名和筛选。