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

エクセルマクロ_データを入れ替える_アイキャッチ エクセルマクロで効率化する

エクセルマクロで、データを入れ替える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 LastRow 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
                LastRow = Cells(15 + Cnt, j).End(xlToRight).Column + 1
                Cells(15 + Cnt, LastRow) = 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
        Target = Cells(i, 1)
    Next i

End Sub

 

マクロ実行後

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


 

VBAコードの解説

[If Cells(i, 1) = Target Then] は、以下の値を比較しています。

・処理対象行のA列
・処理対象行の一つ前のA列


 

A列の値をを比較して同じ値の場合は、横に積み上げて書き込みます。

 

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

以下の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
        
                '転記開始行:10行目
                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倍高速化する手法
...