エクセルVBAマクロを自動作成する無料アプリです。
例として「縦1列のデータを、複数列や複数行に分ける」VBAマクロを作成します。
事例 縦1列のデータを「データ」を含むセルで切り分けて、行と列を入れ替えて、複数行にする
できました(^^)/
アプリの設定
アプリへのリンク ⇒縦1列のデータを、複数列や複数行に分ける
【ポイント】
※「列を切り分ける条件」は、「セルの文字列にデータを含む」を設定します。
※「行列を入れ替えて、横方向に貼り付ける」のチェックを外すと、データが列方向に並びます。
表示されるVBAコード
アプリで作成されたコードを、VBE画面に貼り付ければ、マクロの完成です。
VBAコードを見る
Sub デモ_40() '縦1列のデータを、複数列や複数行にする
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False ' 警告表示を停止Dim 辞書 As Object, アドレス As Variant
Dim 最終セル As String, セル As Range, 行 As Long, j As Long, k As Long
Set 辞書 = CreateObject("Scripting.Dictionary")
Sheets("Sheet1").Select
'◆最終セルを取得
最終セル = Cells(Rows.Count, Range("b1").Column).End(xlUp).Address(False, False)
'◆辞書のkeyに、対象セルのアドレスを入れる
For 行 = Range("b1").Row To Range(最終セル).Row
Set セル = Cells(行, Range("b1").Column)
If セル.Value Like "*データ*" Then
辞書.Add セル.Address(False, False), 1
End If
Next 行
'◆辞書のkeyの最後に、最終セルのアドレスを入れる
辞書.Add Range(最終セル).Offset(1, 0).Address(False, False), 1
'◆配列のアドレスに、辞書のキーをいれる
アドレス = 辞書.keys
k = 0
'◆アドレス間の値を、コピーする
For j = LBound(アドレス) To UBound(アドレス) - 1
Range(Range(アドレス(j)), Range(アドレス(j + 1)).Offset(-1, 0)).Copy
Sheets("sheet1").Range("d1").Offset(k, 0).PasteSpecial Transpose:=True
k = k + 1
Next j
Sheets("sheet1").Select
Application.CutCopyMode = False
Application.DisplayAlerts = True ' 警告表示を再開
Application.ScreenUpdating = True ' 画面描画を再開
End Sub
ChatGPTで修正
あなたが自動化したい内容と事例が少し異なる場合は、無料で使えるマイクロソフトの「BingAIチャット」でコードを修正します。とても簡単です!