使用 Sumproduct 按组排名(在 VBA 中)

问题描述 投票:0回答:1
团体 产品 价值 排名
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

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.