【エクセルマクロ】重複データを削除し合計を合算する

エクセルマクロ 重複しない地域名リストと売上合計を算出アイキャッチ エクセルマクロで効率化する

エクセルマクロで、重複データを削除し合計を合算するマクロコードをご紹介します。

このページのマクロコードは、コピペで使えます。


 

マクロのエディター設定:作業が3倍速くなるおすすめ設定
...

重複データを削除し合計を合算する

以下のマクロを実行すると、
重複データを削除し合計を合算します。

Sub 重複データを削除し合計を合算()

Dim myDic As Object
Dim myKey As Variant
Dim myItem As Variant
Dim myList As Variant
Dim i As Long
    
    Set myDic = CreateObject("Scripting.Dictionary")
    
    'A列,B列のデータを配列に格納
    myList = Range("A2", Range("A" & Rows.Count). _
                     End(xlUp)).Resize(, 2).Value
     
    '連想配列にデータを格納
    For i = 1 To UBound(myList, 1)
    
        '地域名が空欄かチェック
        If Not myList(i, 1) = Empty Then
        
            If Not myDic.exists(myList(i, 1)) Then
            
                '重複しない地域名を取得
                myDic.Add Key:=myList(i, 1), Item:=myList(i, 2)
            Else
           
                '売上金額を加算
                myDic(myList(i, 1)) = myDic(myList(i, 1)) + myList(i, 2)
                
            End If
        End If
    Next
        
    '[都道府県] 重複していないリストを格納
    myKey = myDic.keys
    
    '[売上]   各都道府県の合計を格納
    myItem = myDic.items
    
    'リストを出力
    For i = 0 To UBound(myKey)
        Cells(i + 2, 5).Value = myKey(i)
        Cells(i + 2, 6).Value = myItem(i)
    Next

    '開放
    Set myDic = Nothing

End Sub
配列について

下記の1行のコードを使用するだけで、
A列とB列のすべての値を、配列として取得することができるので便利です。
「myList = Range(“A2”, Range(“A” & Rows.Count).End(xlUp)).Resize(, 2).Value」

 

【エクセルマクロ】重複データを抽出しメッセージボックスに表示
...