Excelで重複したデータを削除する方法!VBAで瞬間一括処理も!

Excelで重複したデータを削除したいときはないでしょうか。

けど、そんな中で悩むことは、

・Excelで重複したデータを削除したいが方法がわからない。
・VBAで重複したデータの削除を一括で処理したいがやり方がわからない。

ですよね。

今回はそんなお悩みを解決する
Excelで重複したデータを削除する方法とVBAで瞬間に処理する方法について
まとめます!

Excelで重複したデータを削除するイメージ

VBAでExcelで重複したデータを削除するイメージについて説明をします。

Excelで重複データがあるリストデータを用意します。

リストの中で2件以上あるデータを1件のみにするよう処理していきます。

方法としては、データタブにある重複の削除ボタンを使った方法となります。

結果です。

次に重複を削除するショートカットで操作を行い、より短時間で操作をします。

最後にVBAを使い、同じく重複の削除処理をし、
重複削除結果を指定できるようにしていきます。

それでは早速使ってみましょう!

重複データを削除したいデータを用意する

まずは、重複データを削除したいリストデータを用意しましょう。

データの内容はなんでもよいですが、重複する文字列を2個以上いれるようにしてください。

サンプルは以下のようにしました。

標準機能で重複データを削除する

標準機能で重複データを削除してみましょう。

重複データがあるセルを選択する

重複データがあるセルを選択します。

重複データを消去する

「データ」タブのデータツール項目にある重複の削除をクリックし実行します。

「重複の削除」ウイザードが表示されたら重複削除したい条件の列を選択しOKをクリックします。

タカヒロ
タカヒロ
列を選択する場合など、1行目がデータではなくタイトル名である場合は、「重複の削除」ウイザードの「先頭行をデータの見出しとして使用する」にチェックを入れてください。

はい、こちらでユニークなデータになりましたね。

重複データを削除するショートカット

重複データを削除するショートカットは以下の通りです。

データを選択

alt+a

alt+m

「重複の削除」ウイザードを確認

enter
で反映されます。

VBAで重複データの差分を抽出する

VBAを使い、ワンクリックで重複データの削除処理をするようにしましょう。

データはこれまでと同様です。

サンプルではデータがあるシートのD2セル以降としていますので、空白にしておきましょう。

次にExcelで重複したデータを削除するVBAを準備します。

サンプルコードは以下の通りです。

Sub 重複データを削除する()


    Dim strSerchlist As Variant
    Dim rangeTemp As Object
    Dim objSerchlist As Object
    Dim strSerchResultsCell As String
    
'設定 --ここから
    
    '重複検索先リストの範囲を指定します。
    Set objSerchlist = Range("A2:B12")
    
    '重複削除結果の出力先セルを指定します。
    strSerchResultsCell = "D2:E12"
    
'設定 --ここまで
    
    
    '元の重複検索リストを配列へ格納します。
    strSerchlist = objSerchlist

    '重複削除リスト作業用のオブジェクトを作成します。
    Set rangeTemp = Range(strSerchResultsCell).Resize(UBound(strSerchlist, 1), 1)
    
    '重複検索リストをコピーします。
    objSerchlist.Copy
    
    '重複検索リストを作業用セルに貼り付けます。
    Range(strSerchResultsCell).PasteSpecial Paste:=xlPasteValues
    
    '重複検索リストから重複分を削除します。Columnが1つ目の場合はColumn=1、複数ある場合はArray(1, 2, 3,**)としてください。
    Range(strSerchResultsCell).RemoveDuplicates Columns:=1, Header:=xlNo
    
    
    Set objSerchlist = Nothing
    Set rangeTemp = Nothing

End Sub

VBAの設定をする

Excelで重複したデータを削除するVBAに先ほど作成した表データの場所を設定しましょう。

設定箇所は以下の通りです。

検索値の範囲を指定します。サンプルの範囲は「A2:A12」となります。

Set objSerchlist = Range(“A2:A12”)

抽出結果の出力先を指定します。サンプルは「D2:E12」となります。

strSerchResultsCell = “D2:E12”

重複検索リストから重複分を削除する設定をします。

Range(strSerchResultsCell).RemoveDuplicates Columns:=1, Header:=xlNo

Columnが1つ目の場合はColumn=1、複数ある場合はArray(1, 2, 3,**)としてください。

Range(strSerchResultsCell).RemoveDuplicates Columns:=Array(1, 2), Header:=xlNo

選択範囲の1行目がタイトル名で重複削除対象にしたくない場合は「Header:=xlYes」としてください。

VBAを実装し実行する

VBAを実装し実行してみましょう。

実装方法は「VBAの実装手順」をご覧ください。

実装できたらマクロから「重複文字を抽出し結果を出力する」を見つけ実行します。

はい、重複文字列が出力されましたね!

また、出力先の位置を設定でカンタンに変えることができます。

サンプルでは出力先を「D7:E17」としています。

VBAの説明

Excelで重複したデータを削除するVBAについて説明をします。

元の重複検索リストを配列へ格納します。

strSerchlist = objSerchlist

重複削除リスト作業用のオブジェクトを作成します。

Set rangeTemp = Range(strSerchResultsCell).Resize(UBound(strSerchlist, 1), 1)

重複検索リストをコピーします。

objSerchlist.Copy

重複検索リストを作業用セルに貼り付けます。

Range(strSerchResultsCell).PasteSpecial Paste:=xlPasteValues

重複検索リストから重複分を削除します。

Range(strSerchResultsCell).RemoveDuplicates Columns:=Array(1, 2), Header:=xlNo

VBAの実装手順

実装手順は以下の通りです。

今回はExcel側にこのVBAを実装します。

①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。

②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。

③右ペインのウインドウに上記のVBAを入力します。

こちらで完了です。

VBAを実行する

では早速VBAの実行をしてみましょう。

①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。

②処理がされたことが確認できれば完了です。
※完了メッセージやステータス管理など必要に応じて実装してもらえばと思います。

さいごに

いかがでしょうか。

今回は、
Excelで重複したデータを削除する方法とVBAで瞬間に処理する方法について
まとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。








コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です