VBA 重複データを抽出しメッセージボックスに表示(動画あり)

エクセルマクロ 重複データを抽出 アイキャッチ ExcelVBA

エクセルマクロで、重複データを抽出しメッセージボックス表示するVBAコードをご紹介します。

このページのマクロコードは、コピペで使えます。
ぜひお試しください!

重複データを抽出しメッセージボックス表示

以下のExcelVBAを実行すると、重複データを抽出しメッセージボックス表示します。


Sub 重複データを抽出()
 
Dim DicName As Variant
Dim DicCount As Variant
Dim i As Long
Dim GetName As String
Dim myKey As Variant
Dim myList As Variant
Dim myItem As Variant
Dim msg As String

    '連想配列
    Set DicName = CreateObject("Scripting.Dictionary")
    Set DicCount = CreateObject("Scripting.Dictionary")
    
    'A列のデータを配列に格納
    myList = Range("A1", Range("A" & Rows.Count).End(xlUp))

    '配列をループ
    For i = 2 To UBound(myList)

        '値を変数へ
        GetName = Cells(i, 1)

        '重複しないリストを連想配列へ
        If Not DicName.Exists(GetName) Then
            DicName.Add GetName, GetName
        Else
            '重複しているリストを連想配列へ
            If Not DicCount.Exists(GetName) Then
                 DicCount.Add GetName, 2
             Else
                 '重複件数を数える
                 DicCount(myList(i, 1)) = DicCount(myList(i, 1)) + 1
            End If
        End If

    Next i

    myKey = DicCount.keys
    myItem = DicCount.items
    
    'メッセージボックス表示
    For i = 0 To UBound(DicCount.items)
        msg = msg & myKey(i) & ":" & myItem(i) & vbCrLf
    Next i
    
    MsgBox "【重複しているデータ】" & vbCrLf & msg
     
    Set DicName = Nothing
    Set DicCount = Nothing
     
End Sub

 

マクロ実行後

A列の中で、重複しているデータを抽出してメッセージボックスに表示します。

重複しているデータ件数もメッセージボックスに表示するので、

どのデータが何個あるのか把握することができます。


 
 

C列の重複を確認したいときは?

上記コードの2か所を変更することで動作します。
参照先をA列 → C列へ変更します。
 

・1つ目の変更箇所

myList = Range(“A1”, Range(“A” & Rows.Count).End(xlUp))

myList = Range(“C1″, Range(“C” & Rows.Count).End(xlUp))
 

・2つ目の変更箇所

GetName = Cells(i, 1)

GetName = Cells(i, 3)


 
 
この記事がお役に立ちますと幸いです。
 
・【エクセルマクロ】重複データを自動処理する使用例まとめ
 

【エクセルマクロ】重複データを自動操作:超便利13選
...

 

「たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】」
「5時間かかる作業が3時間でできます」ではなく「1秒で終わらせます」へ
毎日の業務を瞬時に終わらせるしくみを解説