2017-11-07 36 views
1

同じ次元の配列が5つある場合、それらを5つのサブ配列で1つの配列に結合できますか?Excel vba - 複数の配列を1つに結合する

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 

するか、私は1つによってそれを一つの要素をしなければならないのですか?

答えて

2

配列に配列を結合するのは、要素の数が同じでない場合は通常、ギザギザ配列(info for C# jagged arraysHow do I set up a "jagged array" in VBA?Can you declare jagged arrays in excel VBA directly?)です。 va以下の場合には一つの要素以上vbvcを持っています

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)

関連する問題