Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA中的PercentRank算法 在Php和(LIKE)C++中,我找到了一个答案:“当存在关系时如何给数组分配一个秩数”。我还发现了一些关于Excel的PercentRank的答案,用我不知道的语言_Vba_Ranking - Fatal编程技术网

VBA中的PercentRank算法 在Php和(LIKE)C++中,我找到了一个答案:“当存在关系时如何给数组分配一个秩数”。我还发现了一些关于Excel的PercentRank的答案,用我不知道的语言

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

有人能帮我在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.拉马尔奇

领带应产生相同的百分比等级,如您的示例所示。如果您的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列一样),因此您可能需要对此进行调整。

请发布一个指向您找到的答案的链接