赞
踩
课程来源:王佩丰老师的《王佩丰学VBA视频教程》,如有侵权,请联系删除!
当循环中大量使用需多次计算表达式时,可利用数组简化并提升效率(底层逻辑:只算一次,然后结果暂存,使用时去相应位置取出!)
目录
- Sub Sum_If()
-
- Dim i, k As Integer
- Dim str As String
-
- Dim arr()
-
- '只计算一次Range
- '比每次使用range("g" & i)快
- 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("p5") = k
-
-
- End Sub
- '定义一维数组并赋值
- Sub test()
- Dim arr(1 To 4)
-
- arr(1) = "张三"
- arr(2) = "李四"
- arr(3) = "王五"
- End Sub
-
- '定义二维数组并赋值
- Sub test1()
- 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
- End Sub
-
-
- '将数组中的某个值输出到单元格
- Sub test3()
- Dim arr(1 To 4)
-
- arr(1) = "张三"
- arr(2) = "李四"
- arr(3) = "王五"
-
- Range("b2") = arr(2)
- End Sub
-
- ' 将一维数组中的所有值输出到单元格区域
- ' 一维数组为行存储(先行后列)
- Sub test4()
- Dim arr(1 To 4)
-
- arr(1) = "张三"
- arr(2) = "李四"
- arr(3) = "王五"
-
- Range("a7:d7") = arr
- End Sub
-
-
- '将二维数组中的所有值输出到单元格区域
- Sub test5()
- Dim arr(1 To 3, 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 test6()
- Dim arr()
-
- arr = Range("a1:a5")
-
-
- End Sub
1. 首先,不指定数组大小
2. 然后使用ReDim
语句来定义数组的大小
- Dim arr()
- Dim j, i As Integer
-
- j = Range("a65536").End(xlUp).Row - 1 ' 确定行数
-
- ReDim arr(1 To j)
UBound用于返回数组或集合的指定维度的最大值,即上界。它接受两个参数:数组名(arrayname)和维度(dimension)。如果省略维度参数,则默认返回第一维的上界。
UBound函数与LBound函数一起使用,可以确定数组的大小。
这个函数在处理多维数组时特别有用,可以帮助确定数组的边界,从而在循环或访问数组元素时避免越界错误
- Dim A(1 To 100, 0 To 3, -3 To 4)
-
- ' 使用UBound函数可以获取每个维度的上界:
-
- LBound(A, 1) = 1
- LBound(A, 2) = 0
- LBound(A, 3) = -3
- UBound(A, 1) = 100
- UBound(A, 2) = 3
- UBound(A, 3) = 4
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。