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

コードの知識不要😊 VBAコードを表示する無料アプリです。 ChatGPTの併用で、できることは無限です。

MENU

【ノーコードVBA】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画面に貼り付ければ、マクロの完成です。

 

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チャット」でコードを修正します。とても簡単です!

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