数组的使用可以加快运算速度,比较实现同样功能的不同写法,本质相同。
Sub t() Dim arr, ar, n% arr = Range("a1", [a1].End(xlDown)) For Each ar In arr If ar >= 60 Then n = n + 1 Next ar MsgBox "共有" & n & "人及格" End Sub Sub tt() Dim rng As Range, rngs as range,n% set rngs= Range("a1", [a1].End(xlDown))
For Each rng In rngs If rng.Value >= 60 Then n = n + 1 Next rng MsgBox "共有" & n & "人及格" End Sub
数组的使用:
Sub y() Dim arr, n% arr = Range("b1", "c19")‘可见我们创建了一个二维数组,并将共15行2列的区域赋值给该数组的每个元素’
For i = 1 To 19 If arr(i, 1) = "A" Then n = arr(i, 2) + n Next MsgBox "属性A的得分为" & n End Sub
数组的嵌套
Sub y() Dim arr, n%, arr1(1 To 19), i%‘这里定义arr1的数组共一个维度,15个元素’ arr = Range("b1", "c19") For i = 1 To 19 If arr(i, 1) = "A" Then n = n + 1 arr1(n) = arr(i, 2)‘将数组arr中的第二个数字(即属性A的得分)赋值给数组arr1’ Next MsgBox "属性a的得分为" & WorksheetFunction.Sum(arr1) End Sub
动态数组
在定义arr的时候采用redim函数:
redime arr(1 to num)‘其中num是动态获得的数字’
也可以在使用过程中采取:
dim arr()‘注意此时括号要保留,内部不填写数组的元素个数’
…
n=n+1
redim preserve arr (1 to n)