Public Function DMedian(ByVal fieldname As String, ByVal tbname As String, ByVal wh As String) As Double
'功能:返回中位数
'参数:fieldname -- 求中位数的字段名称
' tbname -- 表或查询名称
' wh -- 筛选条件
Dim rs As New ADODB.Recordset
Dim ssql As String
Dim i As Long
Dim cnt As Long
Dim d As Double
ssql = "select " & fieldname & " from " & tbname & " where " & wh & " order by " & fieldname
rs.Open ssql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
cnt = rs.RecordCount
If cnt Mod 2 = 0 Then
'记录条数为偶数取中间两个数字的平均数
i = Int(cnt / 2)
rs.Move i - 1
d = rs.Fields(fieldname).Value
rs.MoveNext
d = d + rs.Fields(fieldname).Value
d = d / 2
Else
'记录条数为奇数取中间数字
i = Int(cnt / 2) + 1
rs.Move i - 1
d = rs.Fields(fieldname).Value
End If
rs.Close: Set rs = Nothing
DMedian = d
End Function