Calcolare la Media troncata in una tabella di Access
In Access non esiste un equivalente della funzione Excel Media.Troncata, ho scritto questa funzione VBA per sopperire alla mancanza.
La media troncata è una funzione statistica che calcola la media su un insieme di valori ordinati escludendo dal calcolo una certa percentuale X di valori agli estremi.
'Funzione per calcolare la media troncata di un insieme di valori
'nomeTabella = Nome della tabella che contiene i valori su cui si vuole calcolare la media
'nomeCampo = nome del campo contenente i valori su cui calcolare la media troncata,
'il campo deve essere di tipo numerico
'percento = >0 e <1 percentuale di valori da scartare
'MediaTroncata arrotonda per difetto il numero dei valori esclusi al multiplo di 2 più vicino.
'Se percento = 0,1, il 10% di 30 valori sarà uguale a 3 valori. Per
'questioni di simmetria, MediaTroncata esclude un valore dalla parte superiore
'e uno dalla parte inferiore dell'insieme dei dati.
Function MediaTroncata(ByVal nomeTabella As String, ByVal nomeCampo As String,
ByVal percento As Single) As Double
Dim rs As DAO.Recordset
Dim numRecordTotali As Long
Dim numRecToSkip As Single
Dim lNumRecToSkip As Long
Dim Totalone As Double
Dim i As Long
If percento < 0 Or percento > 1 Then
MsgBox ("Percento deve essere compreso tra 0 e 1!")
MediaTroncata = 0
Exit Function
End If
Set rs = CurrentDb.OpenRecordset("Select * FROM " & nomeTabella & " ORDER BY " & nomeCampo)
rs.MoveLast
numRecordTotali = rs.RecordCount
numRecToSkip = numRecordTotali * percento / 2
lNumRecToSkip = Fix(numRecToSkip)
rs.MoveFirst
Totalone = 0
For i = 1 To numRecordTotali
If i > lNumRecToSkip And i <= numRecordTotali - lNumRecToSkip Then
Totalone = Totalone + Nz(rs.Fields(nomeCampo))
End If
rs.MoveNext
Next i
MediaTroncata = Totalone / (numRecordTotali - lNumRecToSkip * 2)
MediaTroncata_Exit:
rs.Close
Set rs = Nothing
Exit Function
MediaTroncata_Err:
MsgBox(“Err.Description”)
Resume Media Troncata_Exit
End Function
Esempio di utilizzo:
In finestra immediata
?MediaTroncata(“TabellaValori”, “CampoValore”, 0.2)Calcolerà la media eliminando il 20% dei valori inseriti nella tabella.
Sistema operativo: WIN32 Applicazioni: Access 97, Access 2000, Access 2002/XP, Access 2003, Access 2007