VBA自定义函数:求非零平均值
Dec 17, 2013 08:59:14 PM
Public Function aveifnot0(ParamArray canshu() As Variant) As Double '本函数为求非零平均数,参数为零散的单元格,而非单元格区域。求连续的单元格区域的非零平均值可以使用 'Excel内置函数AVERAGEIF '定义函数,数组参数需要用关键字ParamArray定义,类型也必须为Variant Dim sum As Double '声明sum为double型数据类型,sum是要计算非零数的累计和 Dim i, k As Integer '声明i,k为单整形 sum = 0 '给sum初始化为零 k = 0 '给k初始化为零,k是计算非零数的个数 For i = LBound(canshu) To UBound(canshu) '开始循环,LBound取数组的第一位,UBound取数组的最后一位 If canshu(i).Value > 0 Then '判断数组里某一个数的值是否大于零 sum = sum + canshu(i).Value '如果大于零,将其值累加 k = k + 1 '如果大于零,计数 Else '否则不执行任何事情 End If '结束条件判断 Next i '循环 aveifnot0 = sum / k '循环完毕,返回非零平均值 End Function '自定义函数结束