VBA自定义函数,当参数是数组时,该如何书写?

比如excel sum函数,参数是输入数组 A1:A100,结果就是A1:A100这个数组里面100个数字的和.

如果我想用自定义函数,写出sum 这个函数,该怎么写?

两个都可以,第二个不能引用 单元格区域,每个单元格都是一个参数,需要用逗号分隔

第一个比较接近内置函数SUM'

Option Explicit
Function Ssum(ByVal range As range) As Double
    Dim rng As range
    For Each rng In range
        Ssum = Ssum + rng.Value
    Next rng
End Function

Function Ssum0(ParamArray arr()) As Double
    Dim i As Integer
    For i = LBound(arr) To UBound(arr)
        If IsNumeric(arr(i)) Then
            Ssum0 = Ssum0 + arr(i)
        End If
    Next i
End Function

追问

假设我输入了A1:A100,含有100个数字的数组作为变量

在自定义函数中,需要取第50个数字,进行相关的运算

比如: ssum=第50个数字
这句话该怎么用VBA写?

追答

你可以把50个数字放在一个新数组里面,额,看你这意思,其实是要遍历数据求和呢,我给你写的都是引用单元格求和的 自定义函数

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-04-27

如下:

Function sum0(ByVal Rng As Range) As Double
    Dim t, R
    t = 0
    For Each R In Rng
        t = t + R.Value
    Next
    sum0 = t
End Function