无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 34|回复: 4
打印 上一主题 下一主题

(分享)VBA中不规则嵌套数组转为二维数组

[复制链接]
跳转到指定楼层
1#
发表于 2024-5-6 16:17:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 likeyouli 于 2024-5-6 16:22 编辑

见图,  t1为一个不规则嵌套数组,t1(0)对应0-6 7个元素,t1(1)对应0-9 10个元素,后边的t1(n)可能会对应20个元素,
如果使用Transpose两次转置,即:t = WorksheetFunction.Transpose(WorksheetFunction.Transpose(t1)) 会提示错误,,当然就是不提示错误,一般也不提倡用transpose,原因是transpose有很多限制,比如限制数量不超过6万多,元素的内容不超过多少字节什么的。

sub 不规则嵌套转二维()
dim t(), t1()
'重新定义二维数组,t1其实是一个一维数组的嵌套,ubound(t1)可以显示出t1第一个元素的最大数量,但ubound(t1,2)却不行,因为t1不是二维数组。下边用的30,其实只要是用一个大点的数,只要大于等于t1第二个括号中最大的数就行。
redim t(1 to ubound(t1), 30)
for z= 0 to ubound(t1)  '用z循环t1的第一个括号
   for each ss in t1(z)  '这里是重点,也就是数组t1的第一个括号对应的内容我看成一个集合。这里只能用for each,因为不能确定第二个括号的元素数量。
   e = e+1
  t(z+1,e)=ss
   next ss
   e=0 '这里的e其实就是为了确定t1第二个括号的元素数量
next z
Range("a1").Resize(UBound(t), UBound(t, 2)) = t  '最后将数组t写入单元格即可
end sub

..png (21.63 KB, 下载次数: 1)

..png

点评

辛苦了  发表于 2024-5-6 16:22

评分

参与人数 1无忧币 +2 收起 理由
yyz2191958 + 2 赞一个!

查看全部评分

2#
发表于 2024-5-6 16:22:03 | 只看该作者
谢谢分享
回复

使用道具 举报

3#
发表于 2024-5-6 16:35:50 | 只看该作者
复杂的系统还是别用VBA的好,或者用更简单一些方式来实现...

点评

excel中的数据不用vba用啥? 数据量很大的时候,我也曾导入到sql server或oracle中,用select语句查询,,但这次就几十万条数据,用数组或字典完全够用,没必要惊动数据库。其它的,python我不会,别的我就想不  详情 回复 发表于 2024-5-6 17:17
回复

使用道具 举报

4#
 楼主| 发表于 2024-5-6 17:17:16 | 只看该作者
邪恶海盗 发表于 2024-5-6 16:35
复杂的系统还是别用VBA的好,或者用更简单一些方式来实现...

excel中的数据不用vba用啥?
   数据量很大的时候,我也曾导入到sql server或oracle中,用select语句查询,,但这次就几十万条数据,用数组或字典完全够用,没必要惊动数据库。其它的,python我不会,别的我就想不到能用什么了。
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-12-17 07:19

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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