Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 23084|回复: 7

[已解决]如何建立动态二维数组

[复制链接]
发表于 2013-7-22 16:43 | 显示全部楼层 |阅读模式
本帖最后由 lan8930 于 2013-7-22 17:01 编辑

求助:为了把问题说明白,先说说动态一维数组吧,我想建立一个一维动态数组。用循环的方式。一边循环一边赋值。只有循环完才知道这个动态数组的最大上标。我的方法是:

   Dim arr()                '先定义一个动态数组
dim m                           '定义一个变量,用以存放数组的最大上标
m=0                              '最大上标初始值
for n = .....                '开始循环取值
if 条件判断,满足条件则
ReDim Preserve arr(m)        '重新定义数组且保留数组前值
arr(m) = Cells(...)              '给数组增加一个值
m=m+1      
  end if
next n


以上,则生成了一个动态的一维数组.一边循环,一边增加最大上标.

现在问题是,同样的要求,怎么样生成一个这样的动态二维数组? 行为未知的,列数为2。
即边循环边赋值,循环完才知道这个二维数组行的最大的上标.
希望能够不进行二次循环能够做到(即循环第一次,得到最大上标,循环第二次赋值).谢谢!
最佳答案
2013-7-22 16:53
1.dim arr()
2.redim arr(1 to 10,1 to 1)
3.redim preserve arr(1 to 10, 1 to 5)

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-7-22 16:53 | 显示全部楼层    本楼为最佳答案   
1.dim arr()
2.redim arr(1 to 10,1 to 1)
3.redim preserve arr(1 to 10, 1 to 5)

回复

使用道具 举报

发表于 2013-7-22 16:53 | 显示全部楼层
和动态的二维数组是自找麻烦,二维数组的动态只支持最后一维,它只能是256列,一般是声明一个足够大的静态数组,或二次声明一个足够大的动态数组,
回复

使用道具 举报

发表于 2013-7-22 16:54 | 显示全部楼层
先定义。
然后再用redim 修改大小,切记,第一维在第一次扩容的时候就定死了,以后只能修改第二维。
再次扩容第二维的时候,记得加 preserve关键字,否则数组中的原有数据就会丢失。
回复

使用道具 举报

 楼主| 发表于 2013-7-22 17:05 | 显示全部楼层
甲百 发表于 2013-7-22 16:53
和动态的二维数组是自找麻烦,二维数组的动态只支持最后一维,它只能是256列,一般是声明一个足够大的静态数组 ...

一般是声明一个足够大的静态数组,或二次声明一个足够大的动态数组,

如果我这么做,怎样才能知道,这个足够大的数组里,装了多少数据?
回复

使用道具 举报

 楼主| 发表于 2013-7-22 17:07 | 显示全部楼层
hwc2ycy 发表于 2013-7-22 16:54
先定义。
然后再用redim 修改大小,切记,第一维在第一次扩容的时候就定死了,以后只能修改第二维。
再次 ...

我恰恰要扩容的就是第一维。第二维已经定了。看来我只能将第一和第二维对调过来。先试试看。谢谢!
回复

使用道具 举报

发表于 2013-7-22 17:13 | 显示全部楼层
lan8930 发表于 2013-7-22 17:05
一般是声明一个足够大的静态数组,或二次声明一个足够大的动态数组,

如果我这么做,怎样才能知道,这个 ...

你装数据时一般都会有一个充当计数器的变量,这个变量最后的值就是数组中装入值的数量
回复

使用道具 举报

发表于 2013-7-24 22:49 | 显示全部楼层
没太看明白,有没有二维数组和动态数组的资料啊,借鉴借鉴...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-19 07:39 , Processed in 0.317352 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表