【エクセルマクロ】データを入れ替える:超使える具体例2選

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

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

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

データを入れ替える(縦データを横データ)

以下のExcelVBAを実行すると、データを入替えます。


Sub 縦リストを横リストに入れ替え()

Dim i As Long
Dim j As Long
Dim Cnt As Long
Dim YokoLoop As Long
Dim TateLoop As Long
Dim Target As String
Dim LastClm As Long

    '横ループ回数(A~G列)
    YokoLoop = 7

    '縦ループ回数(1~11行目)
    TateLoop = 11

    Cnt = 0
    Target = ""

    '縦ループ
    For i = 1 To TateLoop

        '横ループ
        For j = 1 To YokoLoop

            '転記開始行:15行目
            If Cells(i, 1) = Target Then
                
                '転記行の最終列を取得
                LastClm = Cells(15 + Cnt, j).End(xlToRight).Column + 1
                
                '値を転記
                Cells(15 + Cnt, LastClm) = Cells(i, j + 1)
            Else
                If j = 1 And i <> 1 Then
                    Cnt = Cnt + 1
                End If
                Cells(15 + Cnt, j) = Cells(i, j)
            End If

        Next j
        
        '1行目の値を変数格納
        Target = Cells(i, 1)
    Next i

End Sub

 

マクロ実行後

縦に並んでいるデータを、項目ごとに横1列に入れ替えます。


 
 

データを入れ替える(表データを横に入れ替え)

以下のExcelVBAを実行すると、表データを横1列に入れ替えます。


Sub データ並び替え()

Dim i As Long
Dim j As Long
Dim Cnt As Long
Dim YokoLoop As Long
Dim TateLoop As Long
Dim TargetRow As Long

    '横ループ回数(A~G列)
    YokoLoop = 7

    '縦ループ回数(1~4行目)
    TateLoop = 4

    '転記開始列
    Cnt = 1
    
    '転記開始行
    TargetRow = 10

    '縦ループ
    For i = 1 To TateLoop

        '横ループ
        For j = 2 To YokoLoop

            '空白じゃなければ
            If Cells(i, j) <> "" Then

                '転記
                Cells(TargetRow, Cnt) = Cells(i, 1)
                Cells(TargetRow + 1, Cnt) = Cells(i, j)
                Cnt = Cnt + 1

            End If
        Next j
    Next i

End Sub

 

マクロ実行後

表データを、横1列に入れ替えます。


 

VBAコードの解説

[Cells(TargetRow, Cnt) = Cells(i, 1)] は、A列の値を転記します。

[Cells(TargetRow + 1, Cnt) = Cells(i, j)] は、B列以降の値を転記します。


 
 

【エクセルマクロ】縦データを横データに並べる:3倍高速化(動画あり)
...

 

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