【エクセルマクロ】行列を入れ替える:3選(動画あり)

エクセルマクロ_行列を入れ替える_アイキャッチ ExcelVBA

エクセルマクロで、データの行列を入れ替えるVBAコードをご紹介します。

このページのマクロコードは、コピペで使えます。
ぜひお試しください!

行列を入れ替える

以下のマクロを実行すると、行と列を入れ替えます。


Sub 表の行列を入れ替える()
    
    Range("A1:E5").Copy
    Range("G1").PasteSpecial Paste:=xlPasteValues, Transpose:=True
        
End Sub

 
データの行列を入れ替えて、同じシート内に表示しました。

下図はデータの入れ替え結果がわかりやすいように、セルを着色しています。


 
 

行列を入れ替える(応用)

以下のマクロを実行すると、行と列を入れ替えます。


Sub 横リストを縦リストに変換()

Dim i As Long
Dim j As Long
Dim Z As Long
Dim YokoLoop As Long
Dim TateLoop As Long

    '横ループ回数(A~E列)
    YokoLoop = 5

    '縦ループ回数(1~6行目)
    TateLoop = 6
    
    '縦ループ
    For i = 1 To TateLoop
    
        Z = 1
    
        '横ループ
        For j = 1 To YokoLoop
            
            'データ転記
            Cells(Z, 6 + i) = Cells(i, j)
            Z = Z + 1
        
        Next j
    Next i
    
 End Sub

 
データの行列を入れ替えて、横データを縦データに表示しました。

下図はデータの入れ替え結果がわかりやすいように、セルを着色しています。


 
 

行列を入れ替える(別シートへ転記)

以下のマクロを実行すると、行と列を入れ替えたデータを別シートへ転記します。


Sub 行列変換()

Dim i As Long
Dim j As Long
Dim Z As Long
Dim Sht1 As Worksheet
Dim Sht2 As Worksheet
Dim LastRow As Long
Dim LastClm As Long

    Set Sht1 = Sheets("Sheet1")
    Set Sht2 = Sheets("Sheet2")

    '最終行、最終列を取得
    LastRow = Sht1.Cells(Rows.Count, 1).End(xlUp).Row
    LastClm = Sht1.Range("A1").End(xlToRight).Column
    
    '横ループ
    For i = 1 To LastRow
    
        Z = 1
    
        '縦ループ
        For j = 1 To LastClm
            
            'データ転記
            Sht2.Cells(Z, i) = Sht1.Cells(i, j)
            Z = Z + 1
        
        Next j
    Next i
    
 End Sub

 
データの行列を入れ替えて、別シートに表示しました。

値のみ転記しています。


 
 
この記事がお役に立ちますと幸いです。
 

・【エクセルマクロ】データ並べ替えを自動化まとめ
 

【エクセルマクロ】データ並べ替えを自動化する:超便利7選
...

 

「たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】」
「5時間かかる作業が3時間でできます」ではなく「1秒で終わらせます」へ
毎日の業務を瞬時に終わらせるしくみを解説