我在Php和(看了lilke)C ++中找到了“如何在关系存在时为数组分配排名号”这一问题的答案。我还用一些我不知道的语言找到了关于Excel的PercentRank的几个答案。
有人可以帮我在VBA中执行此操作吗?我需要从Access fopr报告中的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期间。 我读到某个地方,当有联系时,函数必须计算某些部分的平均值。
有人请帮助用VBA写的功能吗?
非常感谢。
d。拉马尔什
答案 0 :(得分: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
如果传递的值不在vaArray中,则会产生错误的结果。此外,这假设您传递的是二维数组(就像Excel列一样),因此您可能需要对其进行调整。