用VBA实现Excel函数03:SUMIF

您所在的位置:网站首页 vba实现多条件求和 用VBA实现Excel函数03:SUMIF

用VBA实现Excel函数03:SUMIF

2023-03-24 21:52| 来源: 网络整理| 查看: 265

1、函数的理解:

SUMIF,条件求和函数,是一个常用的数据统计公式。SUMIF函数原理可以分步理解:

SUMIF(range, criteria, [sum_range])先是用第2个参数criteria与第1个参数range里的数据逐一做对比,返回FALSE或者TRUE 根据返回的FALSE或者TRUE,再用IF函数提取第3个参数sum_range的数字 最后再用SUM函数汇总

这就是1个标准的SUMIF函数使用方法。

2、代码实现

有了上面的理解,完成一个标准的SUMIF函数功能应该是比较简单的:

Sub TestMySumIf() Dim rangeValus() As Variant Dim sum_range() As Variant rangeValus = Range("B2:B16").Value sum_range = Range("C2:c16").Value Debug.Print MySumIf(rangeValus, "赵四", sum_range) End Sub '输出:6192 Function MySumIf(rangeValus As Variant, criteria As Variant, sum_range As Variant) As Double Dim i As Long Dim dSum As Long For i = LBound(rangeValus, 1) To UBound(rangeValus, 1) If rangeValus(i, 1) = criteria Then dSum = dSum + VBA.Val(sum_range(i, 1)) End If Next MySumIf = dSum End Function

3、代码完善

SUMIF函数的参数提示上可以看出,第3个参数是在“[]”内的,首先我们也完成这个可省略的功能,省略的情况下,其实第1和第3参数相当于是同一个了,所以我们只要知道第3个参数sum_range没有传递的情况下,直接让3个参数sum_range等于第1个参数range就可以了:

Sub TestMySumIf() Dim rangeValus() As Variant Dim sum_range() As Variant rangeValus = Range("C2:C16").Value Debug.Print MySumIf(rangeValus, 6192) End Sub Function MySumIf(rangeValus As Variant, criteria As Variant, Optional sum_range As Variant) As Double If VBA.IsMissing(sum_range) Then sum_range = rangeValus End If Dim i As Long Dim dSum As Long For i = LBound(rangeValus, 1) To UBound(rangeValus, 1) If rangeValus(i, 1) = criteria Then dSum = dSum + VBA.Val(sum_range(i, 1)) End If Next MySumIf = dSum End Function

IsMissing函数就是用来判断这种可选参数在调用时,是否提供了这个参数的传递。

SUMIF函数的第2个参数criteria输入形式是非常多样的,除了前面看到的输入的是条件本身之外,它还可以输入比较符:

> 大于 < 小于 >= 大于或等于 = criteria Then dSum = dSum + VBA.Val(sum_range(i, 1)) End If Case "


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3