MENU

【ノーコードVBA】データを既存のクロス集計表に転記する

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

例として「データを既存のマトリックス表に転記する」VBAマクロを作成します。

事例 縦のリスト形式のデータを、既存のクロス集計表に転記する

※ 下記事例は見出し行と列が複数項目ですが、1行、1列にも対応します。



アプリの設定

アプリへのリンク
 ⇒データを既存のマトリックス(クロス集計)表に転記



【ポイント】

 リストの見出しが重複するときに、数字であれば加算や、エラーメッセージを出して中止も可能です。

 

表示される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("I3:L5")
        キー先 = Cells(セル.Row, "G") & "|" & Cells(セル.Row, "H") & "|" & Cells(1, セル.Column) & "|" & Cells(2, セル.Column)
        辞書先(キー先) = ""
    Next
    ' 転記元をループし、転記先辞書に転記元のキーが無い場合エラー終了、あれば転記元辞書に値
    Worksheets("Sheet1").Select
    For 行 = 2 To Cells(Rows.Count, "A").End(xlUp).Row
        キー元 = Cells(行, "A") & "|" & Cells(行, "B") & "|" & Cells(行, "C") & "|" & Cells(行, "D")
        If Not 辞書先.Exists(キー元) Then
            MsgBox "エラー:選択した組み合わせが転記先に存在しません"
            Union(Cells(行, "A"), Cells(行, "B"), Cells(行, "C"), Cells(行, "D")).Select
            Exit Sub
        Else
            If Not 辞書元.Exists(キー元) Then
                辞書元(キー元) = Cells(行, "E")
            Else
                辞書元(キー元) = 辞書元(キー元) + Cells(行, "E")
            End If
        End If
    Next 行
    '既存データクリア
    Worksheets("Sheet1").Range("I3:L5").ClearContents
    '転記先に転記元の値を転記
    Worksheets("Sheet1").Select
    For Each セル In Range("I3:L5")
        セル.Value = 辞書元(Cells(セル.Row, "G") & "|" & Cells(セル.Row, "H") & "|" & Cells(1, セル.Column) & "|" & Cells(2, セル.Column))
    Next
Application.DisplayAlerts = True   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開
End Sub

 

ChatGPTで修正

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

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