当前位置:   article > 正文

【EXCEL_VBA_基础知识】11 使用VBA数组

【EXCEL_VBA_基础知识】11 使用VBA数组

课程来源:王佩丰老师的《王佩丰学VBA视频教程》,如有侵权,请联系删除!

当循环中大量使用需多次计算表达式时,可利用数组简化并提升效率(底层逻辑:只算一次,然后结果暂存,使用时去相应位置取出!

目录

0. 效率提升示例

1. 自定义数组

2. 重定义数组(可以动态调整大小的数组)

 3. UBound与LBound


0. 效率提升示例

  1. Sub Sum_If()
  2. Dim i, k As Integer
  3. Dim str As String
  4. Dim arr()
  5. '只计算一次Range
  6. '比每次使用range("g" & i)快
  7. arr = Range("g1:j200000")
  8. '查找条件
  9. str = Range("n5")
  10. For i = 2 To 200000
  11. ' 满足即累加
  12. If arr(i, 1) = str Then
  13. k = k + arr(i, 4)
  14. End If
  15. Next
  16. Range("p5") = k
  17. End Sub

1. 自定义数组

  1. '定义一维数组并赋值
  2. Sub test()
  3. Dim arr(1 To 4)
  4. arr(1) = "张三"
  5. arr(2) = "李四"
  6. arr(3) = "王五"
  7. End Sub
  8. '定义二维数组并赋值
  9. Sub test1()
  10. Dim arr(1 To 4, 1 To 2)
  11. arr(1, 1) = "张三"
  12. arr(1, 2) = 30
  13. arr(2, 1) = "李四"
  14. arr(2, 2) = 35
  15. arr(3, 1) = "王五"
  16. arr(3, 2) = 40
  17. End Sub
  18. '将数组中的某个值输出到单元格
  19. Sub test3()
  20. Dim arr(1 To 4)
  21. arr(1) = "张三"
  22. arr(2) = "李四"
  23. arr(3) = "王五"
  24. Range("b2") = arr(2)
  25. End Sub
  26. ' 将一维数组中的所有值输出到单元格区域
  27. ' 一维数组为行存储(先行后列)
  28. Sub test4()
  29. Dim arr(1 To 4)
  30. arr(1) = "张三"
  31. arr(2) = "李四"
  32. arr(3) = "王五"
  33. Range("a7:d7") = arr
  34. End Sub
  35. '将二维数组中的所有值输出到单元格区域
  36. Sub test5()
  37. Dim arr(1 To 3, 1 To 2)
  38. arr(1, 1) = "张三"
  39. arr(1, 2) = 30
  40. arr(2, 1) = "李四"
  41. arr(2, 2) = 35
  42. arr(3, 1) = "王五"
  43. arr(3, 2) = 40
  44. Range("a15:b17") = arr
  45. '将区域赋值给数组
  46. Sub test6()
  47. Dim arr()
  48. arr = Range("a1:a5")
  49. End Sub

2. 重定义数组(可以动态调整大小的数组

1. 首先,不指定数组大小

2. 然后使用ReDim语句来定义数组的大小

  1. Dim arr()
  2. Dim j, i As Integer
  3. j = Range("a65536").End(xlUp).Row - 1 ' 确定行数
  4. ReDim arr(1 To j)

 3. UBound与LBound

UBound用于返回数组或集合的指定维度的最大值,即上界。它接受两个参数:数组名(arrayname)和维度(dimension)。如果省略维度参数,则默认返回第一维的上界。

UBound函数与LBound函数一起使用,可以确定数组的大小。

这个函数在处理多维数组时特别有用,可以帮助确定数组的边界,从而在循环或访问数组元素时避免越界错误

  1. Dim A(1 To 100, 0 To 3, -3 To 4)
  2. ' 使用UBound函数可以获取每个维度的上界:
  3. LBound(A, 1) = 1
  4. LBound(A, 2) = 0
  5. LBound(A, 3) = -3
  6. UBound(A, 1) = 100
  7. UBound(A, 2) = 3
  8. UBound(A, 3) = 4
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/627567
推荐阅读
相关标签
  

闽ICP备14008679号