'*******************************************************************************
'*
Percentil
'*
Calcula el Percentil correspondiente al valor pasado como parámetro sngValor.
' De acuerdo con el DRAE:
"Valor que divide un conjunto ordenado de datos estadísticos
' de forma que un porcentaje de
tales datos sea inferior a dicho valor. Así, un
' individuo en el percentil 80 está por encima
del 80% del grupo a que pertenece"
'*
Argumentos: -->sngValor: Dato para el que se quiere conocer el Percentil
' -->strCampo: Campo que
contiene los datos que constituyen la "poblacion"
' con la que
compararemos, normalmente el nombre del campo que
' contenga el valor de
sngValor
' -->strTabla: Nombre de
' -->strCondicion: Una condición
escrita sin el WHERE pero con la misma sintaxis
' Es opcional,
solo para el caso de que se quiera filtrar
el
' conjunto de
datos contenidos en strCampo
'*
uso: Percentil(8.2, "Calificacion",
"tblCalificaciones", "Curso = '1'")
' Percentil([calificacion];
"Calificacion"; "TblCalificaciones"; "Curso = '1'")
' No olvide encerrar entre corchetes los
nombres de objetos que contengan espacios
' en blanco (“[tabla calificaciones]”, por
ejemplo)
'* Marciano Almohalla 11/12/2006 21:04
'*******************************************************************************
Function Percentil(sngValor
As Single, strCampo As String, strTabla As String, Optional strCondicion As
String) As Variant
Dim
strCondicion2 As String, _
sngTotalReg As Long, _
sngMenorValor As Long
On
Error GoTo Percentil_TratamientoErrores
'Construimos el criterio a utilizar para
contar los registros inferiores a sngValor
If strCondicion = "" Then 'Si no
se ha especificado parámetro strCondicion
strCondicion2 = BuildCriteria(strCampo,
dbSingle, " < " & sngValor)
Else 'Si se ha especificado el parámetro
strCondicion
strCondicion2
= strCondicion & " AND " & BuildCriteria(strCampo,
dbSingle, " < " & sngValor)
End If
'Calculamos el total de registros
sngTotalReg = IIf(strCondicion =
"", DCount(strCampo, strTabla), DCount(strCampo, strTabla,
strCondicion))
'Calculamos los registros menores que
sngValor
sngMenorValor = DCount(strCampo, strTabla,
strCondicion2)
'Calculamos el percentil. Si se desea
mostrar en formato porcentaje, se debe dar
'dicho formato al control en el que se
mostrará
Percentil = Format(sngMenorValor / sngTotalReg,
"Percent")
Percentil_Salir:
On Error GoTo 0
Exit Function
Percentil_TratamientoErrores:
MsgBox "Error " & Err.Number
& " en proc.: Percentil de Módulo: mdlPercentil (" &
Err.Description & ")"
Resume
Percentil_Salir
End Function