团体 | 产品 | 价值 | 排名 |
---|---|---|---|
A组 | 鲑鱼 | 2000 | 1 |
A组 | 鳟鱼 | 900 | 2 |
B组 | 铅笔 | 500 | 2 |
B组 | 橡胶 | 700 | 1 |
C组 | 斯米诺伏特加 | 1200 | 1 |
C组 | 喜力 | 900 | 2 |
我试图在每个组中实现“使用 Sumproduct 公式排名”,从而导致每个组中的“值”都有升序排列。
我可以在Excel中用公式来完成:
=SUMPRODUCT(($A$2:$A$10000=A2)*($C$2:$C$10000>C2))+1
但是,我想在VBA中实现这一点;我尝试这样做,但它仍然在下面的代码中显示一个错误(对于这个,我需要一个 for 循环版本,直到最后一行):
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