VBA学习笔记六(数组)

引言

让我们先看两个时间对比图,左侧图片为未使用数组,右侧使用数组
在这里插入图片描述
代码对比图:
在这里插入图片描述
由上面的图可以看出,
1、使用数组之后,程序的运行时间会有大幅度的提升,该功劳应该归于内存的优点,即读写速度快。
2、在for循环里面使用Range语句时,程序会先找表格,然后取里面的值,因此会消耗一些时间。

介绍数组

数组声明

类型代码语句
静态数组Dim arr(1 to 4)
动态数组Dim arr()

注: 当存入数组的数据类型明确时,可以按照声明变量的方式,将数组声明改为 Dim arr() as String ;当需要对数组进行手动赋值时,需要采用静态数组,采用动态数组时可以将数组想象成一个虚拟的表格,将表格中的数组直接赋值给数组

计算数组的上下界语句

类别代码语句
上限UBound(arr)
下限LBound(arr)

重定义数组

当声明的数组大小需要计算一下才可以确认时,可以考虑先声明一个动态数组,然后将上述数组进行重定义其大小,参考代码如下:

'先定义个动态的
Dim arr()
j = Range("a65536").End(xlUp).Row - 1
'重定义
ReDim arr(1 To j)

重定义数组时,若需要保留之前数组中已有的数组,采用以下写法

ReDim Preserve arr(1 To j)

实战—查找销售冠军

在这里插入图片描述
问题: 根据左侧单价以及销量计算出该产品的销售额,取出其中最高者将其产品名称和销售额写入右侧。
思路: 逐行计算销售额,将其存入数组中,采用VBA自带函数取出最大值即可
代码:

Sub test()
'先定义个动态的
Dim arr()
Dim i, j As Integer
j = Range("a65536").End(xlUp).Row - 1
'重定义
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)

MsgBox UBound(arr)
MsgBox LBound(arr)
End Sub

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值