任何编程语言都离不开数组的应用,同样的,VBA也不例外,今天给大家讲讲数组的一些知识。
什么是数组?数组其实就是一组数据,存在于我们的内存中,我们看不到。在我们日常应用中,我们基本只用得到一维和二维数组,本文主要讲解这两种。
一维数组中是一行多列数据,用逗号分隔。
如下代码,我定义了一个数组,然后给数组赋值,再将数组的数据赋值给单元格中。
![f17248e2649a5d747b47fa6ec96ed301.png](https://img-blog.csdnimg.cn/img_convert/f17248e2649a5d747b47fa6ec96ed301.png)
![784b5443853845499f267ba4234d7e47.png](https://img-blog.csdnimg.cn/img_convert/784b5443853845499f267ba4234d7e47.png)
二维数组其实就是一组多行多列的数据。
如下代码,我定义了一个4行4列的数组,然后给数组部分元素赋值,再将数组整体赋值到单元格。
![e11549ad6debd2a191be64b1c99e53e4.png](https://img-blog.csdnimg.cn/img_convert/e11549ad6debd2a191be64b1c99e53e4.png)
注意:arr(1 To 4, 1 To 4) 中,第一个参数的1 to 4,1代表数组的上界,4代表数组的下界,可以用对应的函数求出数组的上下界,上界到下界也就是数组的范围。
![5b295c3234afd74fca3f3070fd9c4661.png](https://img-blog.csdnimg.cn/img_convert/5b295c3234afd74fca3f3070fd9c4661.png)
Lbound 上界
Ubound 下界
如下代码:
我定义了一个二维数组arr,一个一维数组brr,然后将arr,brr的上下界赋值到arr中,然后将arr数据赋值到A1:B4单元格区域。
我们可以发现,无论是一维数组,还是二维数组,他的上界都是第一个参数的上界,下界都是第一个参数的下界。而一维数组是一行多列的数据,所以上下界就是列的上下界,二维数组的上下界就是行的上下界。
Sub arrtwo() Dim arr(1 To 4, 1 To 2) Dim brr(2 To 10) arr(1, 1) = "arr的上界" arr(1, 2) = LBound(arr) arr(2, 1) = "arr的下界" arr(2, 2) = UBound(arr) arr(3, 1) = "brr的上界" arr(3, 2) = LBound(brr) arr(4, 1) = "brr的下界" arr(4, 2) = UBound(brr) Range("A1:B4") = arrEnd Sub
注意:如果在数组中,我们没有指定范围,数组默认的第一个标记是0,不是1。一维数组的第一个元素是arr(0),二维数组的第一个元素是arr(0,0)
![4c52b2e090d05e63649b0c64b724a5ee.png](https://img-blog.csdnimg.cn/img_convert/4c52b2e090d05e63649b0c64b724a5ee.png)
Sub ExChanDate() Dim arr(), brr() arr() = Range("A1:A4").Value brr() = Range("B1:B4").Value Range("A1:A4") = brr() Range("B1:B4") = arr() End Sub
代码解析:
第2行:定义两个数组
第3-4行:分别将A1:A4数据,B1:B4数据赋值给arr,brr两个数据
第5-6行:将arr,brr数组的数据分别赋值给B1:B4,A1:A4,实现数据的交换
![2b825a543312c06041dbb8096d898d73.gif](https://img-blog.csdnimg.cn/img_convert/2b825a543312c06041dbb8096d898d73.gif)
注意:此处虽然我没有申明数组的上下界,但是此处数组上界是1,将单元格中的数据赋值给数组时,上界都是1,且都为二维数据。
也就是说,将单元格中的数据赋值给数组时,无论是一行,还是一列,赋值到数组中时,都是二维数组。
如以下代码:
我将单元格中的一行数据赋值给arr(),我再给arr()中单个元素赋值时,第一项数据是arr(1,1),第二项数据是arr(1,2),而不是arr(1),arr(2),这是因为arr()在此处是二维数组。
Sub test() Dim arr() arr() = Range("A1:D1").Value arr(1, 1) = 1 '此处不能用arr(1),因为arr()是二维数组 arr(1, 2) = 2 Range("A1:D1") = arr End Sub
![b4079b61e43589cb6cd993cb9a46f9ae.png](https://img-blog.csdnimg.cn/img_convert/b4079b61e43589cb6cd993cb9a46f9ae.png)
![2211daf05e28a755d63b96d126f007c2.png](https://img-blog.csdnimg.cn/img_convert/2211daf05e28a755d63b96d126f007c2.png)
1)大大加快运行代码速度,特别是在循环中,利用数组进行运算会比直接引用单元格快很多。
2)增加代码的可读性
3)便于修改代码
本文是一些数组的基本用法,希望同学们能够理解,在之后的一些文章中,进行数据处理时,大部分都会使用到数组。到时候再带领大家深刻认识数组的一些用法。本文就到这啦,如果文章对你有用的话,点个在看或者分享给你的朋友,大家一起学习吧![ed5f6746c0253a273430340b75be0b10.png](https://img-blog.csdnimg.cn/img_convert/ed5f6746c0253a273430340b75be0b10.png)