一道VBA的题求解 去掉最值的
1.有一组数据 val=(1,4,5,6,10).让我们去掉最大值和最小值以后求平均数, 编一个FUNCTION FNMOYCOR2.val=(15,20,0,-13,34,22)这次去掉为0的数然后求平均数.3.val=(1,0, ,3,4 5) 这次去掉0和空格的地方 求重新得到的新数据VAL
1.有一组数据 val=(1,4,5,6,10).让我们去掉最大值和最小值以后求平均数, 编一个FUNCTION FNMOYCOR2.val=(15,20,0,-13,34,22)这次去掉为0的数然后求平均数.3.val=(1,0, ,3,4 5) 这次去掉0和空格的地方 求重新得到的新数据VAL
Dim iVal As Variant
iVal = Array(1, 4, 5, 6, 10)
MsgBox FNMOYCOR(iVal)End SubFunction FNMOYCOR(arr) As Integer
Dim mx As Integer, mn As Integer
mx = WorksheetFunction.Max(arr)
mn = WorksheetFunction.Min(arr)
For i = 0 To UBound(arr)
If arr(i) <> mx And arr(i) <> mn Then
FNMOYCOR = FNMOYCOR + arr(i)
End If
Next
FNMOYCOR = FNMOYCOR / (UBound(arr) - 1)
End Function
Sub a()
Dim iVal As Variant
iVal = Array(1, 4, 5, 6, 10)
MsgBox FNMOYCOR(iVal)End SubFunction FNMOYCOR(arr)
Dim mx As Integer, mn As Integer
mx = WorksheetFunction.Max(arr)
mn = WorksheetFunction.Min(arr)
For i = 0 To UBound(arr)
If arr(i) <> mx And arr(i) <> mn Then
FNMOYCOR = FNMOYCOR + arr(i)
End If
Next
FNMOYCOR = FNMOYCOR / (UBound(arr) - 1)
End Function
Sub a()
Dim iVal As Variant
iVal = Array(15, 20, 0, -13, 34, 22)
MsgBox ave(iVal)End SubFunction ave(arr)
Dim aveM As Integer, i As Integer, j As Integer
For i = 0 To UBound(arr)
If arr(i) = 0 Then j = j + 1
ave = ave + arr(i)
Next
ave = ave / (UBound(arr) - j + 1)
End Function
If arr(i) <> mx And arr(i) <> mn Then
FNMOYCOR = FNMOYCOR + arr(i)
End If
是在干吗? 为什么要加ARR(I),每次这种题,我都不会找这个关系....
还有第2题的也是
For i = 0 To UBound(arr)
If arr(i) = 0 Then j = j + 1
ave = ave + arr(i)
Next
这个我也不太明白. 谢谢
ARR是Function FNMOYCOR的参数啊~就是一个数组~
然后
If arr(i) <> mx And arr(i) <> mn Then
FNMOYCOR = FNMOYCOR + arr(i)
End If就是把除了最大最小数以外的所有数字加到一起
至于arr(i) 就是数组里面的数字咯,i是索引撒~
比如有
iVal = Array(1, 4, 5, 6, 10)
iVal(0) = 1 , iVal(1) = 4