Media Troncata PDF Stampa E-mail
Scritto da Cinzia Pagani   
Domenica 23 Settembre 2007 20:37

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 r
s = 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

 

Ultimo aggiornamento Giovedì 02 Luglio 2009 12:01