前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Excel VBA解读(152): 数据结构——谈谈数组

Excel VBA解读(152): 数据结构——谈谈数组

作者头像
fanjy
发布2019-07-23 16:50:59
1.2K0
发布2019-07-23 16:50:59
举报
文章被收录于专栏:完美Excel

在VBA中,数组是一种很有用的数据结构。可以在数组中存放相关同类的数据,方便程序进行处理。本文主要较深入地讲解数组的概念。

数组实际上就是一个变量,用来存储多个相同类型的数据。

例如,下面的语句:

Dim payment As Integer

payment= 300

表示在变量payment中存储值300。也就是说,一个变量一次只能存储一个值。

如果我们有多个值需要存储,照这个方法,则需要多个变量:

Dim payment1 As Integer

Dim payment2 As Integer

Dim payment3 As Integer

Dim payment4 As Integer

Dim payment5 As Integer

payment1= 300

payment2= 250

payment3= 350

payment4= 100

payment5= 500

如果存储的值更多,例如有10000个值,则会需要10000个变量。这样,不仅麻烦而且易出错,查找变量的值也很麻烦,今后也难以对代码进行维护,代码也会很冗长。

其实,完全没有这个必要。对于这样的问题,我们可以使用数组轻松解决。假设数值存储在工作表列A中,为演示方便,假设只有5个数据,即数值在A2:A6区域,那么可以使用下面的代码来存储这些数值:

Dim i As Integer

Dim payments(1 To 5) As Integer

For i = 1 To 5

payments(i) = Range(“A1”).Offset(i).Value

Next i

上面代码中的变量payments就是数组,它一次存储了5个数值。

语句:

Dim payments(1 To 5) As Integer

声明了一个包含5个值的一维数组,数组名后括号中的内容指定了数组索引取值范围。示例中,表明该数组的索引从1开始至5结束。payments数组的值及对应的索引值如下图1所示。

图1

如果上面payments数组存储的是某小区1号楼5名住户1季度的水电费,那么下面的语句:

payments(3)

将得到第3位住户的水电费,即350。

现在,要使用数组分别存储这5名住户一年4个季度的水电费,则可使用下面的语句:

Dim payments(1 To 5,1 To 4) As Integer

这声明了一个二维数组。使用两个循环语句给这个二维数组赋值:

Dim i As Integer

Dim j As Integer

For i = 1 To 5

For j = 1 To 4

payments(i,j) = Cells(i + 1, j).Value

Next j

Next i

如下图2所示,现在payments是二维数组,且存储了单元格A2:D6区域中的数值。图2中,payments(3,2)中存储的值是300。

图2

再进一步,如果存储小区3栋楼的用户水电费信息呢?可以使用下面的语句:

Dim payments(1 To 5,1 To 4,1 To 3) As Integer

这声明了一个三维数组。如下图3所示,每栋楼的水电费数据在3个工作表中,可以将它们存储在这个三维数组中。

图3

当然,这种三维或更多维的数据不常用,只是了解一下,有助于对数组知识的理解。

小结

通过以上的学习,我们知道了数组可以用来方便地存储同一类型的多个值。通过声明数组来确定数组的大小,即能够存储的数据个数,以及存储的数据类型。通过数组索引来方便地获取相应位置的值。并且,可以声明一维、二维或多维数组,但一般常用的还是一维数组和二维数组。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档