使用 Sumproduct 进行组排名

问题描述 投票:0回答:1
团体 产品 价值 排名
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
excel vba loops ranking sumproduct
1个回答
0
投票
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
© www.soinside.com 2019 - 2024. All rights reserved.