Excel精英培训网

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

ReDim Preserve 二维数组逐渐增加

  [复制链接]
发表于 2011-1-20 18:49 | 显示全部楼层 |阅读模式
5学分
如果是一维数组,下面的代码成立
Dim arrbiao()
dim k&
for i = 1 to n
    If arr(i, 1)<> Then
    k=k+1
    ReDim Preserve arrbiao(k)
    arrbiao(k) = arr(i, 1)
next i

现在我需要把上面例子中的arrbiao改变为二维数组,应该怎么定义呢??

Sub 重新二维数组()
Dim arrbiao()
Dim k&
arr = [h2:h600]
n = 599
jn = 5
ReDim arrisq(1 To jn, 1 To 1)
For i = 1 To n
For j = 1 To jn
   
    If arr(i, 1) <> "" Then
    arrisq(j, 1) = arrisq(j, 1) + 1
    ReDim Preserve arrbiao(arrisq(j, 1), j) '此处可以设定为能增加的二维数组
       If arr(i, 1) = 14 Then
       Stop
   
       arrbiao(arrisq(j, 1), j) = arr(i, 1)
   
       GoTo 1234
   
       ElseIf arr(i, 1) = 12 Then
   
       arrbiao(arrisq(j, 1), j) = arr(i, 1)
   
       GoTo 1234
   
    '   elseif ……
   End If
    End If
Next j
1234
Next i
'Stop
End Sub


红字部分运行提示错误:下标越界
经在不查看,发现是arrisq(j, 1) 刚开始=2时出现错误,不知道应该怎么纠正,请指教


注明:问的是渔,不是问鱼
重新二维数组.rar (10.92 KB, 下载次数: 31)

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-1-20 19:34 | 显示全部楼层
ReDim Preserve arrbiao(arrisq(j, 1), j)
只有末尾可以反复重新定义,也就是说你这个数组的第一维 不能用arrisq(j, 1)来重新定义的
回复

使用道具 举报

 楼主| 发表于 2011-1-20 19:37 | 显示全部楼层
回复 开辆小富康 的帖子

那应该怎么来解决这个问题呢??

arrisq(j, 1)也是一个常数了,怎么不可以用呢???
回复

使用道具 举报

发表于 2011-1-20 19:43 | 显示全部楼层
只有末维可以反复重新定义。你的所谓常数,在循环体中,值在不断变化,是一个变量。
回复

使用道具 举报

 楼主| 发表于 2011-1-20 19:47 | 显示全部楼层
回复 开辆小富康 的帖子

意思是二维数组只可以让列变为变量,不可以让行变成变量???
回复

使用道具 举报

发表于 2011-1-20 19:57 | 显示全部楼层
xdwy81129 发表于 2011-1-20 19:47
回复 开辆小富康 的帖子

意思是二维数组只可以让列变为变量,不可以让行变成变量???

是这样的意思。
或者你想把后面的当成行,前面的当成列的话也是可以理解的。
回复

使用道具 举报

发表于 2011-1-20 19:57 | 显示全部楼层
或者你想把后面的当成行,前面的当成列的话也是可以的,就可以达到你所需要的反过来的效果
回复

使用道具 举报

发表于 2011-1-20 20:00 | 显示全部楼层
同意 小富 观点
回复

使用道具 举报

 楼主| 发表于 2011-1-20 20:02 | 显示全部楼层
回复 放浪形骸 的帖子

写成:ReDim Preserve arrbiao( j,arrisq(j, 1))??

这里j是也要变的数据,只是知道范围,arrisq(j, 1)是逐渐增加的
回复

使用道具 举报

 楼主| 发表于 2011-1-20 20:06 | 显示全部楼层
回复 放浪形骸 的帖子

写成:    ReDim Preserve arrbiao(j, arrisq(j, 1))
    arrbiao(j, arrisq(j, 1)) = arr(i, 1)

还是提示下标越界
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-24 21:50 , Processed in 0.282337 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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