エクセルマクロで、横データを縦データに並べるVBAコードをご紹介します。
このページのマクロコードは、コピペで使えます。
動画で動作確認ができます👇
横データを縦データに並べる
以下のマクロを実行すると、横データを縦データに並べます。
Sub 横データを縦データに変換()
Dim i As Long
Dim j As Long
Dim Q As Long
Dim Z As Long
Dim YokoLoop As Long
Dim TateLoop As Long
Dim InputData(100, 2) As String
'横ループ回数
YokoLoop = Range("A1").End(xlToRight).Column
'縦ループ回数
TateLoop = Cells(Rows.Count, 1).End(xlUp).Row
Z = 0
'横ループ
For j = 1 To YokoLoop Step 3
'縦ループ
For i = 2 To TateLoop
'3列分の値を配列に格納
For Q = 0 To 2
InputData(Z, Q) = Cells(i, Q + j)
Next Q
Z = Z + 1
Next i
Next j
' 配列を一気にセル範囲に転記
Cells(2, 12).Resize(100, 3).Value = InputData
'配列のクリア
Erase InputData
End Sub
マクロ実行後
横データの値の取得について
2次元配列を使って、横データの値をすべて取得します。
例えば、セルA2:C2の値の取得状況を、
ウォッチウィンドウで見てみると、以下のようになります。
・果物名 → [InputData(0, 0)]
・数量 → [InputData(0, 1)]
・単価 → [InputData(0, 2)]
VBAコードの解説
[Dim InputData(100, 2) As String] と、
[Cells(2, 12).Resize(100, 3).Value = InputData] の「100」について解説します。
下図の赤枠のセルの合計数を下回らないように設定します。
今回は適当に「100」といれましたが、
[Dim InputData(30, 2) As String] と、
[Cells(2, 12).Resize(30, 3).Value = InputData] としても、動作します。
この記事がお役に立ちますと幸いです。
【エクセルマクロ】データ並べ替えを自動化する:超便利7選
...
「Excel自動化[最強]時短仕事術」
自動化の基礎と時短に役立つテクニック解説書
毎日の定型業務を手際良く行え、大幅な業務効率化を実現!
リンク