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

比如excelsum函数,参数是输入数组A1:A100,结果就是A1:A100这个数组里面100个数字的和.如果我想用自定义函数,写出sum这个函数,该怎么写?... 比如excel sum函数,参数是输入数组 A1:A100,结果就是A1:A100这个数组里面100个数字的和.

如果我想用自定义函数,写出sum 这个函数,该怎么写?
展开
 我来答
coolbi5
推荐于2017-10-15 · TA获得超过1万个赞
知道大有可为答主
回答量:1.1万
采纳率:35%
帮助的人:2386万
展开全部

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

第一个比较接近内置函数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个数字放在一个新数组里面,额,看你这意思,其实是要遍历数据求和呢,我给你写的都是引用单元格求和的 自定义函数
表里如一
2015-04-27 · 知道合伙人软件行家
表里如一
知道合伙人软件行家
采纳数:2066 获赞数:11634
从事6年生产管理,期间开发了多款小软件进行数据处理和分析,后

向TA提问 私信TA
展开全部

如下:

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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式