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