2011-01-26 29 views
0

我已經找到了一個答案,「如何在Php和(看起來像lilke)的C++中,當綁定存在時給一個數組分配一個等級號碼」。我還發現了一些有關Excel的PercentRank(我不知道)的答案。VBA中的PercentRank算法

有人可以幫助我在VBA中做到這一點嗎?我需要從Access中的12個值中計算PercentRank報告,我無法使用Excel。以下是我之後的示例:

Per Val %Rank 
    01 80 0.82 
    02 74 0.45 
    03 88 1.00 
    04 60 0.00 
    05 86 0.91 
    06 68 0.18 
    07 64 0.09 
    08 78 0.64 
    09 76 0.55 
    10 72 0.27 
    11 78 0.64 
    12 72 0.27 

請注意,對於08和11時段,值是相同的。也爲期間10和12. 我讀的地方,當有關係的函數必須計算somesort的平均值。

任何人都可以請幫助用VBA編寫的函數嗎?

謝謝你一堆。

D.拉馬什

+0

請將鏈接發送至您找到的答案 – 2011-01-26 02:37:02

回答

1

領帶應該產生相同的百分比排位,就像你的例子顯示。如果你的x號不在數組中,那麼你必須推斷。如果你放心,x是數組,可以簡化這個

Public Function PRank(vaArray As Variant, x As Variant) As Double 

    Dim lLower As Long 
    Dim lHigher As Long 
    Dim i As Long 

    For i = LBound(vaArray, 1) To UBound(vaArray, 1) 
     If vaArray(i, 1) < x Then 
      lLower = lLower + 1 
     ElseIf vaArray(i, 1) > x Then 
      lHigher = lHigher + 1 
     End If 
    Next i 

    PRank = lLower/(lLower + lHigher) 

End Function 

如果傳遞的x值,是不是在vaArray,這會產生錯誤的結果。此外,這假設你傳遞了一個二維數組(如Excel列),所以你可能需要調整。