VBA中的PercentRank算法 在Php和(LIKE)C++中,我找到了一个答案:“当存在关系时如何给数组分配一个秩数”。我还发现了一些关于Excel的PercentRank的答案,用我不知道的语言
有人能帮我在VBA中完成这项工作吗?我需要从Access fopr报告中的12个值计算PercentRank,我无法使用Excel。以下是我所追求的一个例子:VBA中的PercentRank算法 在Php和(LIKE)C++中,我找到了一个答案:“当存在关系时如何给数组分配一个秩数”。我还发现了一些关于Excel的PercentRank的答案,用我不知道的语言,vba,ranking,Vba,Ranking,有人能帮我在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
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.拉马尔奇领带应产生相同的百分比等级,如您的示例所示。如果您的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
Public Function恶作剧(vaArray为变量,x为变量)为双精度
时间越长越暗
黯淡如长
我想我会坚持多久
对于i=LBound(vaArray,1)到UBound(vaArray,1)
如果vaArray(i,1)x然后
lHigher=lHigher+1
如果结束
接下来我
恶作剧=lLower/(lLower+lHigher)
端函数
如果传递的x值不在vaArray中,则会产生错误的结果。此外,这假设您正在传递一个二维数组(就像Excel列一样),因此您可能需要对此进行调整。请发布一个指向您找到的答案的链接