Private Function GetAverage(Source() As Single, n As Integer) As Single '去除最大最小n个数求平均值
InsertSort Source
Dim i As Integer, Sum As Single
Dim k As Integer
'--0的个数-----
Dim n0 As Integer '为0
Dim nn0 As Integer '不为0
n0 = 0
nn0 = 0
For i = LBound(Source) To UBound(Source)
If Source(i) = 0 Then
n0 = n0 + 1
End If
Next
'-----------
For k = n0 + n To UBound(Source) - n
Sum = Sum + Source(k)
nn0 = nn0 + 1
Next
If nn0 > 0 Then
GetAverage = Sum / nn0
Else
GetAverage = -1
End If
End Function
Private Sub InsertSort(Source() As Single) '由小到大排序
Dim i As Long, j As Long, k As Long, c As Long
Dim tmpArr() As Single
ReDim n(LBound(Source) To UBound(Source)) As Single
c = LBound(Source)
For i = LBound(Source) To UBound(Source)
For j = LBound(Source) To c - 1
If Source(i) <= n(j) Then Exit For
Next
For k = c - 1 To j Step -1
n(k + 1) = n(k)
Next
n(j) = Source(i)
c = c + 1
Next
For i = LBound(Source) To UBound(Source)
Source(i) = n(i)
Next
End Sub