excel使用技巧大全现在要求二办销售的总和,前面的方法是在数据区域中声明一个具有相同行数的数组,用于适应条件值,因此在新数组中会有很多空值。假如我们可以首先判断符合条件的数据的数量,我们可以声明一个只适合于条件值数组,这样做的目的是为了不出现空值。
第1种方法:
咱们先来判断适合条件的数据数量(ts),然后就能声明一个新数组 arr1(1 to ts)
Sub 条件求和()
Dim arr, arr1, i%, ts%, n%
arr = Range("a2", [c2].End(xlDown))
ts = WorksheetFunction.CountIf([a:a], "二办")
ReDim arr1(1 To ts)
For i = 1 To WorksheetFunction.CountA([a:a]) - 1
'或者
'For i = 1 To Range("a2", [a2].End(xlDown)).Rows.Count
If arr(i, 1) = "二办" Then n = n + 1: arr1(n) = arr(i, 3)
Next
MsgBox "二办销量总额为:" & WorksheetFunction.Sum(arr1)
End Sub
这里大家要注意的是,先声明arr1,得到arr1的下标后用redim重新声明这个数组,得到的一个新数组arr1如下:
第2种方法:
我们先来判断,如果条件符合,那就用n=n+1进行计数n+1,然后声明数组。
Sub 条件求和1()
Dim arr, arr1(), i%, ts%, n%
arr = Range("a2", [c2].End(xlDown))
For i = 1 To WorksheetFunction.CountA([a:a]) - 1
If arr(i, 1) = "二办" Then
n = n + 1
ReDim Preserve arr1(1 To n)
arr1(n) = arr(i, 3)
End If
Next
MsgBox "二办的总销量为:" & WorksheetFunction.Sum(arr1)
End Sub
但在这里要注意一点是,假如直接redim arr1 (1 to n),这样在循环时,每次循环都会将之前循环得到的新数组里的元素给清洗掉,必须要 ReDim Preserve arr1(1 To n) 这样声明,才能够保留之前循环得到的数值,同时一开始申明arr1时括号保留。
得到新数组arr1的方法请看下图:
大家看懂了吗?要多练习哦!
1.《VBA中的动态数组》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《VBA中的动态数组》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/shehui/26554.html