1. 数组的好处
①可作为辅助列,临时存放数值
②大大加快运算的效率
2. 如何定义数组
dim arr()
3. 动态数组和静态数组
动态数组指大小不固定,可将区域直接赋值进去
静态数组指数组固定大小,即Dim arr(1 to 5)
4. 计算数组大小
Ubound(arr) -- 返回数组的上限
Lbound(arr) -- 返回数组的下限
5. 重新定义数组大小
ReDim
6. 将区域赋值给数组
arr = range("a1:a5")
7. 数组的取值
range("a1") = Arr(行,列)
7. 数组的维度
- 一维数组 -- 赋值给以数组时,数组的范围要先定义好
Dim arr(1 To 4) arr(1) = "张三" arr(2) = "李四" arr(3) = "王五" '将某个值输出到单元格' range("a1") = arr(2) '将一维数组中的所有值输出到单元格区域' Range("a7:d7") = arr
- 二维数组的赋值和输出
Dim arr(1 To 4, 1 To 2) arr(1, 1) = "张三" arr(1, 2) = 30 arr(2, 1) = "李四" arr(2, 2) = 35 arr(3, 1) = "王五" arr(3, 2) = 40 '输出到单元格区域' Range("a15:b17") = arr
Sub test() '静态数组,范围固定好了' Dim arr(1 To 4) arr(1) = "张三" arr(2) = "李四" arr(3) = "王五" '数组的取值' range("b1") = arr(2) End Sub
将区域赋值给数组时数组就会变成二维的
dim arr()
'将区域赋值给数组'
arr = range("a1:a5")
'取值时带上行列'
range("c1") = arr(2,1)
数组可作为临时存放变量的空间
Dim arr()
Dim j, i As Integer
j = Range("a65536").End(xlUp).Row - 1
'定义数组时必须要用常量,所以待i为常量时再重新定义数组'
'此时是动态数组'
ReDim arr(1 To j)
For i = 1 To j
arr(i) = Range("b" & i + 1) * Range("c" & i + 1)
Next
'取数组中最大的那个值'
Range("h3") = Application.WorksheetFunction.Max(arr)
'找出销售额最高的产品'
Range("h2") = Range("a" & Application.WorksheetFunction.Match(Range("h3"), arr, 0) + 1)
可借助数组提高代码的执行效率
Ag不用数组的做法
Sub t()
Dim i, k, t
t = Timer
For i = 2 To 200000
If Range("g" & i) = Range("n5") Then
k = k + Range("j" & i)
End If
Next
Range("o5") = k
MsgBox Timer - t
End Sub
最终运行所需的时间为3.1秒左右
使用数组的做法
Sub t()
Dim i, k
Dim t
Dim str As String
Dim arr()
t = Timer
arr = Range("g1:j200000")
str = Range("n5")
For i = 2 To 200000
'注意数组取值的写法'
If arr(i, 1) = str Then
k = k + arr(i, 4)
End If
Next
Range("o5") = k
MsgBox Timer - t
End Sub
最终运行的所需时间为0.3秒
两者都只是在只有一个条件下的循环,若增加条件时间相差会更为明显
网友评论