Function Medianx(ParamArray varNums() As Variant) As Variant
'*******************************************
'Name: Medianx (Function)
'Purpose: Return the median from a parameter
' array of numbers
'Author: raskew
'Inputs: (1) ? medianx(1,11,8,3,6,13)
' (2) ? medianx(1,11,8,3,6)
'Output: (1) 7
' (2) 6
'*******************************************
Dim Temp As Integer, i As Integer, J As Integer, n As Integer
n = UBound(varNums)
If (n < 0) Then
Exit Function
Else
'use bubble sort to sequence the elements
'(good for small number of elements but
'slow for larger sorts)
For i = 0 To UBound(varNums)
For J = 0 To UBound(varNums)
If varNums(i) < varNums(J) Then
Temp = varNums(i)
varNums(i) = varNums(J)
varNums(J) = Temp
End If
Next J
Next i
End If
'If there's an odd number of elements, median = center element
'e.g. if elements = 1,3,6,8,11 then median = 6
'With an even number elements, median = average of 2 center elements
'e.g. if elements = 1,3,6,8,11,13 then median = (6+8)/2 = 7
Medianx = IIf(n Mod 2 = 0, varNums(n / 2), (varNums(n \ 2) + varNums(n \ 2 + 1)) / 2)
'For i = 0 To UBound(varNums)
' Debug.Print varNums(i)
'Next i
End Function