打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VBA简单入门31:Redim语句,数组的裁剪和扩展
1、 截取部分数组数据

一碗水,我们可以倒出一半或三分之一。同样,数组里面的数据,当不需要全部输出到工作表的时候,我们也可以自定义地决定输出多少数据。

如下面代码,将一个10行3列的数组,从数组下标开始(相当于我们看到的数组的上部)截取5行2列的部分。

如将10行3列数组输出到工作表的时候,Resize设定的范围是11行4列,那么多出的数组空间部分将赶回错误#N/A。

存放数据数据的单元格区域范围却不能比数组大。


数组在内存中可以像单元格一样自由修改数据。如,Cell(1,1)="A"表示单元格A1的值为A;

arr(1,1)="A"表示数组左上角第一个单元格的值为A。

遍历二维数组就相当于遍历单元格区域一样,对其赋值、修改内容都和单元格操作没有多大区别。

下面代码,提取数组arrA列为C的数据,用K计算其条数,然后将数据放在自身的上部存储,输出的时候只输出K值截取的部分。

A1:C10是原始的数组arr,E1:G10是提取数据后修改了的数组arr,但在输出数据的时候,使用Resize只输出E1:G10上部的无填充颜色部分E1:G2(黄色部分没有输出到工作表,写上只为参考),也就是K值标记的部分。

这样,我们就运用数据完成了数据的筛选。

当然,我们也可以用一个新的数组brr来装入C的数据。见下面例子。

二、使用Redim语句设定数组的大小。

通常我们要装行李物品,肯定是找足够大的行李箱来装。同样我们可以使用Redim语句来定义一个足够大的数据,用来存储处理后的数据。这里要注意的是,如下面代码中的brr(),这里的括号不能省略,否则就不是数组,而是变体变量,不能是使用Redim语句。

本例中数组brr是下图这个样子,只有K值的部分有数据,黄色部分空白。

但我们只输出其前2行数据到工作表中。

Redim后的数组,其数据都会被清空,而且大小和纬度数都可以改变。

二维数组Redim为一维数组

二维数组改变大小

三、使用Redim Preserve扩展数据的 最后一维度 大小,并保留原来的数据。

同样以上面的例子来作演示,这次我们先不设定数组brr的大小,而是在数组处理数据的时候,根据K值来扩展brr的大小。

这相当于我们盖厂房,开始是1000平,不够用了,就扩建到2000平。

下面代码同样可以达到上面代码的效果。

在数组brr还没有转置的时候,brr是一个3行2列的数组。

转置后,成为2行3列的数组,输出到工作表中。

使用Redim Preserve需要转置函数Transpose,因为其受到Transpose的限制(该问题见上一章)。本人习惯于先Redim设定一个足够大数组来处理实际问题。

最后,Redim了数组的大小就不能够使用Redim Preserve,否则会报错,提示下标越界。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VBA入门49:清空数组
Excel 数组精华
VBA数组声明及赋值后的回填方法
【烟花原创】VBA零基础之第113篇 VBA数组(三)
VBA数组学习笔记
学习VBA,报表做到飞 第二章 数组 2.1 数组的声明、赋值及读取
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服