Связи должны давать такой же процентный ранг, как показано в вашем примере.Если вашего числа х нет в массиве, то вам нужно экстраполировать.Если вы уверены, что 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), поэтому вам, возможно, придется подстроиться под это.