エクセルVBAマクロを自動作成する無料アプリです。
例として「1データが複数行(2行)の表を、1データ1行のリストにする」VBAマクロを作成します。
事例 1明細1行のデータベース形式する
マクロを実行すると、1データ1行になりました。
アプリの設定
アプリへのリンク ⇒1データが複数行(2行)の表を、1データ1行のリストにする
【ポイント】
■ 結合されたセルは、自動で解除されます。
■ 計算式は、値で上書きされます。
■ 「列の見出し」が1行だけのデータも対応できます。
表示されるVBAコード
アプリで作成されたコードを、VBE画面に貼り付ければ、マクロの完成です。
VBAコードを見る
Sub デモ() '1データが複数行(2行)の表を、1データ1行のリストにする
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False ' 警告表示を停止
Dim セル範囲 As String, セル As Range
Sheets("Sheet1").Select
'表の最終行を決定
Dim 最終行 As Long
最終行 = Cells(Rows.Count, Range("A1").Column).End(xlUp).Row
セル範囲 = "a1" & ":" & Cells(最終行, Range("b1").Column).Address(False, False)
Range(セル範囲).Select
'セルの結合解除
Selection.UnMerge
'◆元表の行数と列数を取得
Dim 元表行数 As Long, 元表列数 As Long
元表行数 = Selection.Rows.Count
元表列数 = Selection.columns.Count
'◆表を配列に格納
Dim 配列 As Variant, 行数 As Long, データ1行 As Variant, 配列1次元 As Variant, 出力先 As Range
配列 = Range(セル範囲).Value
'◆配列を1行づつ、1次元配列へ格納
For 行数 = 1 To 元表行数
データ1行 = WorksheetFunction.Index(配列, 行数)
If 行数 = 1 Then
配列1次元 = Split(Join(データ1行, "|"), "|")
Else
配列1次元 = Split(Join(配列1次元, "|") & "|" & Join(データ1行, "|"), "|")
End If
Next 行数
'◆配列のメモリーを開放
Erase 配列
Erase データ1行
'◆1次元配列を、配列2次元に格納
Dim 行 As Long, 列 As Long, 値 As Long
ReDim 配列2次元(元表行数 / 2 - 1, 元表列数 * 2 - 1)
For 行 = 0 To 元表行数 / 2 - 1
For 列 = 0 To 元表列数 * 2 - 1
配列2次元(行, 列) = 配列1次元(値)
値 = 値 + 1
Next 列
Next 行
'◆配列1次元のメモリーを開放
Erase 配列1次元
Set 出力先 = Sheets("sheet1").Range("d1").Resize(元表行数 / 2, 元表列数 * 2)
'◆配列2次元を、表示
出力先 = 配列2次元
On Error Resume Next
出力先.Borders.LineStyle = True '表に罫線をいれる
出力先.SpecialCells(xlCellTypeConstants, xlNumbers).Style = "Comma [0]" '表の数字にカンマをいれる
出力先.SpecialCells(xlCellTypeConstants, xlNumbers).HorizontalAlignment = xlRight '表の数字を右揃えにする
Application.DisplayAlerts = True ' 警告表示を再開
Application.ScreenUpdating = True ' 画面描画を再開
End Sub
類似する処理です。
ChatGPTで修正
あなたが自動化したい内容と事例が少し異なる場合は、無料で使えるマイクロソフトの「BingAIチャット」でコードを修正します。とても簡単です!