エクセルマクロで、データを入れ替える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列以降の値を転記します。
この記事がお役に立ちますと幸いです。
【エクセルマクロ】データ並べ替えを自動化する:超便利7選
...
「たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】」
「5時間かかる作業が3時間でできます」ではなく「1秒で終わらせます」へ
毎日の業務を瞬時に終わらせるしくみを解説
リンク