增强Excel的SUM()函数:实现求和前非数据项的预筛查

一、功能描述

  自定义一个 Excel 函数 sumDIY(arg1, arg2, ... ),其中参数个数任意,类型也任意:可以是文本型数字"123",或纯文本"demo",或单元格区域,抑或是数组形式的引用Row(1:3)。实现功能:只对各参数中的各个数值求和,并作为函数结果显示出来。

二、思路分析

1、参数个数不确定,用关键字 ParamArray;

2、对参数的类型分类:

2.1. 对象型(如单元格区域);

2.2. 数组型(如Row(1:3));

2.3. 值类型(又分为【数值型和【非数值型);

三、实现代码

Function sumDIY(ParamArray arr())
    Dim i&, rng As Range, sumTemp#, arrTemp
    For i = 0 To UBound(arr)
        '参数为单元格区域:
        If IsObject(arr(i)) Then
            sumTemp = 0
            For Each rng In arr(i).Cells
                If IsNumeric(rng.Value) Then
                    sumTemp = sumTemp + rng.Value
                End If
            Next
            arr(i) = sumTemp
        '参数为数组:
        ElseIf IsArray(arr(i)) Then
            arr(i) = WorksheetFunction.Sum(arr(i))
        '参数为值类型:是数字则不变,非数字则置0:
        ElseIf Not IsNumeric(arr(i)) Then
            arr(i) = 0
        End If
    Next i
    sumDIY = Application.Evaluate(Join(arr, "+"))
End Function

四、实测效果



五、注意事项

1、当参数中有数组时,公式必须切换到数组形式:【Ctrl+Shift+Enter】;

2、用内置的sum函数处理数组参数,省略了对该数组数据是按行还是按列分布的讨论,简化了代码,唯一不足是调用了工作表函数,执行效率可能会有影响。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安冬的码畜日常

您的鼓励是我持续优质内容的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值