練習問題
Excel関数のTRANSPOSEを使ったプログラム。

Sub 転置行列01()
'指定したセル範囲の値の転置行列
Dim a As Variant
Dim b As Variant
Dim c As String
'あらかじめ指定してあるセル範囲を配列にする
a = Selection.Value
'行と列の入れ替え
b = Application.WorksheetFunction.Transpose(a)
'貼り付けるセルの指定
c = Range("A1").Address
'指定したセルを先頭にして貼り付け
Range(c).Resize(UBound(b, 1), UBound(b, 2)) = b
End Sub

TRANSPOSEを使わないプログラム。

Sub 転置行列02()
'3行3列の転置行列
Dim a As Variant
Dim i As Integer
Dim j As Integer
a = Range("A1:C3")
    '行と列の入れ替え、E1を先頭にして結果を貼り付け
    For i = 1 To 3
        For j = 1 To 3
            Cells(j, i + 4) = a(i, j)
        Next
   Next
End Sub