VBAマクロを自動作成する無料アプリ

VBAコードの知識不要😊ChatGPTで機能を追加

MENU

【ノーコード】データの文字列や〇印を既存のクロス表にいれる

エクセルVBAマクロを自動作成する無料アプリです。

例として、アプリで「データの文字列や〇印を既存のクロス表にいれる」VBAマクロを作成します。

事例 右側のクロス表に、文字列を転記する

※ 下の例以外に、複数列や複数行の見出しや、数字にも対応します。

アプリの設定

アプリのトップページ

 ⇒▼表形式の変換
 ⇒リスト形式を

 ⇒【ツール】縦のリスト形式のデータを、既存のマトリックス表に転記する




【ポイント】

■ 【4】リストの見出しが重複するときは、エラーメッセージを出して、中止できます。

表示されるVBAコード 

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

 

VBAコードを見る

Sub デモ() '縦のリスト形式のデータを、既存のマトリックス表に転記する
 
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止
    Dim 辞書元 As Object, キー元 As String, セル As Range, 行 As Long
    Set 辞書元 = CreateObject("Scripting.Dictionary")
    Dim 辞書先 As Object, キー先 As String
    Set 辞書先 = CreateObject("Scripting.Dictionary")
    ' 転記先辞書作成
    Worksheets("Sheet1").Select
    For Each セル In Range("F2:H4")
        キー先 = Cells(セル.Row, "E") & "|" & Cells(1, セル.Column)
        辞書先(キー先) = ""
    Next
    ' 転記元をループし、転記先辞書に転記元のキーが無い場合エラー終了、あれば転記元辞書に値
    Worksheets("Sheet1").Select
    For 行 = 2 To Cells(Rows.Count, "A").End(xlUp).Row
        キー元 = Cells(行, "A") & "|" & Cells(行, "B")
        If Not 辞書先.Exists(キー元) Then
            MsgBox "エラー:選択した組み合わせが転記先に存在しません"
            Union(Cells(行, "A"), Cells(行, "B")).Select
            Exit Sub
        Else
            If Not 辞書元.Exists(キー元) Then
                辞書元(キー元) = Cells(行, "C")
            Else
                MsgBox "エラー:選択した組み合わせが重複しています"
                Union(Cells(行, "A"), Cells(行, "B")).Select
                Exit Sub
            End If
        End If
    Next 行
    '既存データクリア
    Worksheets("Sheet1").Range("F2:H4").ClearContents
    '転記先に転記元の値を転記
    Worksheets("Sheet1").Select
    For Each セル In Range("F2:H4")
        セル.Value = 辞書元(Cells(セル.Row, "E") & "|" & Cells(1, セル.Column))
    Next
Application.DisplayAlerts = True   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開
End Sub   

 

ChatGPTで修正

あなたが自動化したい内容と事例が少し異なる場合は、無料で使えるマイクロソフトの「BingAIチャット」でコードを修正します。とても簡単です!

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