エクセルVBAマクロを自動作成する無料アプリです。
例として「1データが複数行(2行)の表を、1データ1行のリストにする」VBAマクロを作成します。
(ページの末尾に、VBAコード掲載)
事例 社員(仮名)の給与一覧を、1明細1行のデータベース形式する
マクロを実行すると、1データ1行になりました。
あとは、「社員番号」列を2列目に移動したり、数字にカンマを入れたりするコードを別に作成し、連続トリガーで実行します。
アプリの設定
アプリのトップページ
⇒▼表形式の変換
⇒リスト形式へ
⇒【ツール】1データが複数行(2行)の表を、1データ1行のリストにする
【ポイント】
■ 【3】元データの1データの行数は、初期値3が入っていますが、変更できます。
■ 結合されたセルは、自動で解除されます。
■ 計算式は、値で上書きされます。
■ 「列の見出し」が1行だけのデータも対応できます。
表示されるVBAコード
アプリで作成されたコードを、VBE画面に貼り付ければ、マクロの完成です。
VBAコードを見る
Sub デモ_113() '1データが複数行(2行)の表を、1データ1行のリストにする
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False ' 警告表示を停止
Dim セル範囲 As String, セル As Range, 右下セル As String
'◆最終行を取得し、セル範囲を決める
With Range("a1:c1").CurrentRegion
右下セル = Cells(.Row + .Rows.Count - 1, Range("c1").Column).Address(False, False)
End With
セル範囲 = "a1" & ":" & 右下セル
Range(セル範囲).Select
Call デモ_113_メイン処理(セル範囲)
Application.DisplayAlerts = True ' 警告表示を再開
Application.ScreenUpdating = True ' 画面描画を再開
End Sub
Sub デモ_113_メイン処理(セル範囲 As String)
'セルの結合解除
Selection.UnMerge
'◆元表の行数と列数を取得
Dim 元表行数 As Long, 元表列数 As Long
元表行数 = Selection.Rows.Count
元表列数 = Selection.Columns.Count
'◆表を配列に格納
Dim 配列 As Variant, 行数 As Long, データ1行 As Variant, 配列1次元 As Variant
配列 = Range(セル範囲).Value
'◆配列を1行づつ、1次元配列へ格納
For 行数 = 1 To 元表行数
データ1行 = WorksheetFunction.Index(配列, 行数)
If 行数 = 1 Then
配列1次元 = Split(Join(データ1行, vbCrLf), vbCrLf)
Else
配列1次元 = Split(Join(配列1次元, vbCrLf) & vbCrLf & Join(データ1行, vbCrLf), vbCrLf)
End If
Next 行数
'◆配列のメモリーを開放
Erase 配列
'◆1次元配列を、配列2次元に格納
Dim 配列2次元() As Variant, 行 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次元
'◆配列2次元を、表示
Sheets("sheet1").Range("e1").Resize(元表行数 / 2, 元表列数 * 2) = 配列2次元'◆リストに罫線を入れる
Sheets("sheet1").Range("e1").Resize(元表行数 / 2, 元表列数 * 2).Borders.LineStyle = True
End Sub
ChatGPTで修正
あなたが自動化したい内容と事例が少し異なる場合は、無料で使えるマイクロソフトの「BingAIチャット」でコードを修正します。とても簡単です!