VBA 配列の転置

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 6月 12, 2022

このチュートリアルでは、VBAを使用して配列を転置する方法について説明します。

配列の転置

この関数は、2次元の配列を転置します。

Function TransposeArray(MyArray As Variant) As Variant
    Dim x As Long, y As Long
    Dim maxX As Long, minX As Long
    Dim maxY As Long, minY As Long
    
    Dim tempArr As Variant
    
    '上下限を取得する
    maxX = UBound(MyArray, 1)
    minX = LBound(MyArray, 1)
    maxY = UBound(MyArray, 2)
    minY = LBound(MyArray, 2)
    
    '新しい Temp Array の作成
    ReDim tempArr(minX To maxX, minY To maxY)
    
    '配列を転置する
    For x = minX To maxX
        For y = minY To maxY
            tempArr(y, x) = MyArray(x, y)
        Next y
    Next x
    
    '転置した配列を出力する
    TransposeArray = tempArr
    
End Fucntion

Sub TestTransposeArray()
    Dim testArr(1 To 3, 1 To 2) As Variant
    Dim outputArr As Variant
    
    '配列の値を代入する
    testArr(1, 1) = "スティーブ"
    testArr(1, 2) = "ジョンソン"
    testArr(2, 1) = "ライアン"
    testArr(2, 2) = "ジョンソン"
    testArr(3, 1) = "アンドリュー"
    testArr(3, 2) = "スコット"
    
    'TransposeArray関数を呼び出す
    outputArr = TransposeArray(testArr)
    
    '結果を出力する
    MsgBox outputArr(2, 1)

End Sub

この関数をテストするには、TestTransposeArrayプロシージャを呼び出します。ここでは、初期配列testArrが作成され、outputArrが最終的な転置配列となります。

WorksheetFunction.Transpose

上述の方法の代わりに、Excelで転置した配列をExcelに出力したい場合があります。その場合、ExcelのTranspose Worksheet Functionを使用することができます。 このプロシージャでは、Transpose Worksheet Functionを使って、2次元配列をExcelの範囲に移し替えます。

Sub TestTransposeArray_Worksheetfx()
    Dim maxX As Long, minX As Long
    Dim maxY As Long, minY As Long
    
    '配列を作成し値を割り当てる
    Dim MyArray(1 To 3, 1 To 2) As Variant
    
    MyArray(1, 1) = "スティーブ"
    MyArray(1, 2) = "ジョンソン"
    MyArray(2, 1) = "ライアン"
    MyArray(2, 2) = "ジョンソン"
    MyArray(3, 1) = "アンドリュー"
    MyArray(3, 2) = "スコット"
    
    '上下限を取得する 
    maxX = UBound(MyArray, 1)
    minX = LBound(MyArray, 1)
    maxY = UBound(MyArray, 2)
    minY = LBound(MyArray, 2)
    
    '配列を転置してExcelへ書き出す
    Range("a1").Resize(maxY - minY + 1, maxX - minX + 1).Value = _
      Application.WorksheetFunction.Transpose(MyArray)

End Sub
vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples