【ChatGPT】ノーコードでExcelを自動化する無料ツール

ChatGPTでVBAコードを作れます(アプリメニューの一番上にあります)

MENU

1データが複数行(2行)の表を、1データ1行のリストにする

無料アプリで、すぐにエクセルVBAマクロを作成できます。

例として、アプリで「1データが複数行(2行)の表を、1データ1行のリストにする」VBAマクロを作成します。(ページの末尾に、VBAコード掲載)

処理のイメージ

事例

社員(仮名)の給与一覧を、1明細1行のデータベース形式にします。

マクロを実行すると、1データ1行になりました。

あとは、「社員番号」列を2列目に移動したり、数字にカンマを入れたりするコードを別に作成し、連続トリガーで実行します。

アプリの設定

アプリのトップページ

 ⇒▼表形式の変換

 ⇒リスト形式へ

 ⇒【ツール】1データが複数行(2行)の表を、1データ1行のリストにする

【ポイント】

■ 【3】元データの1データの行数は、初期値3が入っていますが、変更できます。

■ 結合されたセルは、自動で解除されます。

■ 計算式は、値で上書きされます。

■ 「列の見出し」が1行だけのデータも対応できます。

表示されるVBAコード 

アプリで作成されたコードを、VBE画面に貼り付ければ、マクロの完成です。

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
   

マクロを使うメリット

手作業で数分かかる作業が、1秒で終わります。

ぜひ、アプリをご利用ください。

 

アプリはこちらから↓↓↓↓ 

nocodevba.herokuapp.com