Excel精英培训网

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

[已解决]把一维数组放到有规律的方阵内出现"下标越界"的问题

[复制链接]
发表于 2015-6-20 23:21 | 显示全部楼层 |阅读模式
本帖最后由 markang 于 2015-6-21 19:21 编辑

这个类似问题我白天问过,但现在又出现了新的问题
要达到的效果:将sheet2中 Range("a2:a16")的内容放到sheet1的range("b2:H42"),要求每行放3个元素,每个元素间隔3个单位;当放第4个元素时下一行与上一行间隔10个单位,再每行放3个单位,依次类推:
表格中range("b2:H42")是想达到的效果,下面代码错在哪里呢? 把一维数组放到有规律的方正内出现下标越界的问题.rar (13.91 KB, 下载次数: 3)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2015-6-21 19:06 | 显示全部楼层    本楼为最佳答案   
Sub tt()
    On Error GoTo ErrorHandle   '错误跳转语句
    Dim arr, y, n, brr
    arr = Application.Transpose(Sheet2.Range("a2:a16"))
    '错误原因是brr数组size不够
    ReDim brr(1 To WorksheetFunction.RoundUp(UBound(arr) / 3, 0) * 10 - 9, 1 To 7)
    n = 1
    k = -2
    For y = 1 To UBound(arr)
        k = k + 3
        If k > 7 Then k = 1: n = n + 10
        brr(n, k) = arr(y)
    Next y
    Range("b2").Resize(n, 7) = brr
EndSub: '此处表示正常结束,退出SUB
    Exit Sub
ErrorHandle:
    Stop '出错时会跳转到这里,可以查看错误时变量值和状态
End Sub
WorksheetFunction.RoundUp(UBound(arr) / 3, 0) * 10 - 9这部分公式是因为目标区域是如果只有一行,那行高是1,两行就是11,三行就是21,以此类推,所以要这样计算。
回复

使用道具 举报

 楼主| 发表于 2015-6-21 19:15 | 显示全部楼层
谢谢.对哦,我竟然连这个也想不起来......其实我设定个大的数值就可以了brr(1 To 1000, 1 To 7)
哈哈结合上各朋友的帮助问题总算解决了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-1 01:27 , Processed in 0.370079 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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