MENU

【ノーコードVBA】項目ごとに集計し、合計表を作成する(Dictionary)

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

例として、「項目ごとに値を集計し、合計表を作成する」VBAマクロを作成します。

事例 A列の商品ごとにD列の金額を、F列に集計します。



 できました!😁

アプリの設定

アプリへのリンク
 ⇒項目ごとに値を集計し、合計表を表示する

表示されるVBAコード 

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

 

VBAコードを見る

Sub デモ() '項目ごとに値を集計し、合計表を表示する
 
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止
 
Dim セル範囲 As String
Sheets("Sheet1").Select
'表の最終行を決定
Dim 最終行 As Long
最終行 = Cells(Rows.Count, Range("A1").Column).End(xlUp).Row
セル範囲 = "a1" & ":" & Cells(最終行, Range("d1").Column).Address(False, False)

    '◆辞書のkeyに項目名、itemに集計数をいれる
    Dim 辞書 As Object, データ As Variant, 行 As Long, セル As Variant
    Set 辞書 = CreateObject("Scripting.Dictionary")
    Sheets("Sheet1").Select
    データ = Range(セル範囲).Value
    For 行 = 1 To UBound(データ, 1)
        セル = データ(行, 1)
        If 辞書.Exists(セル) Then
            辞書(セル) = 辞書(セル) + データ(行, 4)
        Else
            辞書.Add セル, データ(行, 4)
        End If
    Next 行
    Dim 配列 As Variant, キー As Variant, 配列行 As Long
    ReDim 配列(辞書.Count - 1, 1)
    配列行 = 0
    For Each キー In 辞書
        配列(配列行, 0) = キー
        配列(配列行, 1) = 辞書.Item(キー)
        配列行 = 配列行 + 1
    Next
Sheets("Sheet1").Range("f1").CurrentRegion.Clear
Sheets("Sheet1").Range("f1").Resize(辞書.Count, 2) = 配列
Sheets("Sheet1").Range("f1").CurrentRegion.Borders.LineStyle = True
Application.DisplayAlerts = True   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開
End Sub    

 

複数項目はこちら↓

 

ChatGPTで修正

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

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