VBA简单⼊门31:Redim语句,数组的裁剪和扩展
1、截取部分数组数据
⼀碗⽔,我们可以倒出⼀半或三分之⼀。同样,数组⾥⾯的数据,当不需要全部输出到⼯作表
的时候,我们也可以⾃定义地决定输出多少数据。
如下⾯代码,将⼀个10⾏3列的数组,从数组下标开始(相当于我们看到的数组的上部)截取5
⾏2列的部分。
如将10⾏3列数组输出到⼯作表的时候,Resize设定的范围是11⾏4列,那么多出的数组空间部
分将赶回错误#N/A。
存放数据数据的单元格区域范围却不能⽐数组⼤。
数组在内存中可以像单元格⼀样⾃由修改数据。如,Cell(1,1)=''A''表⽰单元格A1的值为A;
resize函数vbaarr(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,否则会报错,提⽰下标越界。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论