根据值给出排名

时间:2019-07-31 09:41:21

标签: arrays excel vba sorting rank

我有一个小问题,希望您能帮助我。我的联系人值列表以及它们之间的几个空行。现在,我需要为每个值给出一个等级。 例如,我的值是5、7和10。它们的排名分别为1(5),2(7)和3(10)。 在与5相同的行中,等级1应该写在另一列中。

我有一个解决方案的主意,但这似乎并不实用: -浏览列表并将所有值存储在数组中 -排序数组(以某种方式) -再次遍历每一行,如果找到数组中的第一个值,则将1写入等级 -遍历每一行并在找到第二个值的地方写2,将2列为等级 -继续数组中的每个元素

这似乎不是解决我问题的明智或快速方法。 另外,我还需要弄清楚如何对数组进行排序。

我阅读了有关“排名”方法的信息,但我不确定如何使用它。

Dim RankingArray As Variant
Dim a As Integer
Dim i As Integer
Dim j As Integer
Dim x As Integer

a = 0
x = 0
ReDim RankingArray(a) As String 

For i = 1 to LastRow
RankingArray(a) = Cells(i,5).value 
    a = a + 1
    ReDim Preserve ArrDoneME(a) As String

Next i

'Sort Array magically

a = 0

For j = LBound(RankingArray) To UBound(RankingArray)
     For i = 1 to LastRow
         If RankingArray(j) = Cells(i,5).value 
            x = x + 1
            cells(i,4).value = x
         End if
     Next i
Next j

0 个答案:

没有答案