【问题标题】:Excel vba - combine multiple arrays into oneExcel vba - 将多个数组合并为一个
【发布时间】:2018-04-19 17:43:24
【问题描述】:

如果我有 5 个具有相同维度的数组,我可以将它们组合成一个包含 5 个子数组的数组吗?

va = ws1.Range("A2", ws1.Cells(Rows.Count, "A").End(xlUp)).Value   
vb = ws1.Range("D2", ws1.Cells(Rows.Count, "D").End(xlUp)).Value    
vc = ws1.Range("F2", ws1.Cells(Rows.Count, "F").End(xlUp)).Value    
vd = ws1.Range("C2", ws1.Cells(Rows.Count, "C").End(xlUp)).Value    
ve = ws1.Range("E2", ws1.Cells(Rows.Count, "E").End(xlUp)).Value

我可以这样做吗:

ReDim vx(1 To UBound(va, 1), 1 To 5, 1 To 1)
vx(1,1,1) = va
vx(1,2,1) = vb
vx(1,3,1) = vc
vx(1,4,1) = vd
vx(1,5,1) = ve

还是我必须一个一个地做?

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    如果元素个数不相同,则将数组组合成数组通常命名为锯齿状数组(info for C# jagged arraysHow do I set up a "jagged array" in VBA?Can you declare jagged arrays in excel VBA directly?)。在下面的例子中,vavbvc 多了一个元素:

    Option Explicit
    
    Public Sub TestMe()
    
        Dim va, vb, vc, vx
    
        va = Array(1, 2, 3, 4)
        vb = Array(11, 22, 33)
        vc = Array(111, 222, 333)
    
        ReDim vx(3)
        vx(0) = va
        vx(1) = vb
        vx(2) = vc
    
        Debug.Print vx(0)(1)
        Debug.Print vx(0)(2)
    
        Debug.Print vx(1)(1)
        Debug.Print vx(2)(2)
    
    End Sub
    

    您只需声明vx,然后按原样分配vavbvc。然后你访问这样的元素 -> vx(1)(0)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-12
      • 2015-11-11
      • 2017-01-11
      • 2020-08-21
      相关资源
      最近更新 更多