团体 | 产品 | 价值 | 排名 |
---|---|---|---|
A组 | 鲑鱼 | 2000 | 1 |
A组 | 鳟鱼 | 900 | 2 |
B组 | 铅笔 | 500 | 2 |
B组 | 橡胶 | 700 | 1 |
C组 | 斯米诺伏特加 | 1200 | 1 |
C组 | 喜力 | 900 | 2 |
我想跟大家分享如何在每个组中进行“使用Sumproduct公式排名”,它会显示每个组中的排名“值”,如果每个组中的值最高,则会显示1到2,3, 4 直到最低值。 其实我可以在Excel版本中做到这一点,公式如下:
=SUMPRODUCT(($A$2:$A$10000=A2)*($C$2:$C$10000>C2))+1
但是,我希望你帮我实际上用“VBA”编写代码,我尝试这样做,但它仍然显示调试代码如下:(对于这个,我需要循环版本,直到最后一行)
Sub Ranking()
lastrowA = Sheet1.Range("A" & Rows.Count).End(xlUp).Row 'Find a lastrow of column A
Dim i As Integer
Dim groupRange As Range
Dim productRange As Range
Set groupRange = Sheet1.Range("A:A" & lasrowA) 'Cost Center Name Range
Set productRange = Sheet1.Range("B:B" & lasrowA) 'Store Name Range
For i = 2 To lastrowA
Cells(i, 4).Value = Evaluate("Sumproduct((A2:A10000=Cells(i,1))*(A2:A10000>Cells(i,2)))") + 1
Next i
End Sub
Option Explicit
Sub Ranking()
Dim lastrowA As Long, f As String
f = "=Sumproduct(($A$2:$A$10000=A2)*($C$2:$C$10000>C2)) + 1"
With Sheet1
'Find a lastrow of column A
lastrowA = .Cells(.Rows.Count, "A").End(xlUp).Row
.Range("D2:D" & lastrowA).Formula = f
End With
End Sub