VBA 字典 键值为二维数组并不断增加行

Sub test()
Dim arr()
arr = Range("A1:F20") '也可dim area as range, set area = range("A1:F20")
Set dic1 = CreateObject("Scripting.dictionary") '必须先声明dic1为字典
Set dic1 = dicFromArr(arr) '必须是set 赋值,不然报错

For Each PN In Array("A", "B", "C")
    Row = Row + 5
    frr = dic1(PN)
    Cells(Row, "J").Resize(UBound(frr, 1), UBound(frr, 2)) = frr
Next
End Sub

尝试将 相同键的值写入同一个数组中,通过新建数组,遍历复制旧键值,遍历写入新键值的方法写入新键值数组,方法很呆.

常用方法: 只在键值中记录键在原数组中的坐标, 如键A在原数组中位于irow行,则需要的数据直接调用原数组的dic("A") = irow行.

复制新增数组的方法:

'方法1 transpose + redim preserve
'导出旧键值,转置是为了redim扩容
brr =application.transpose (dic("A"))
'转置的旧键值新增1列
redim preserve brr( 1 to ubound(brr,1) ,1 to ubound(brr,2)+1)
'原数组 新行 填入 
for j = 1 to ubound(brr,2)
    brr(j, ubound(brr,2)+1) = arr(i,j)

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值