Excelで重複したデータを削除したいときはないでしょうか。
けど、そんな中で悩むことは、
・VBAで重複したデータの削除を一括で処理したいがやり方がわからない。
ですよね。
今回はそんなお悩みを解決する
Excelで重複したデータを削除する方法とVBAで瞬間に処理する方法について
まとめます!
もくじ
Excelで重複したデータを削除するイメージ
VBAでExcelで重複したデータを削除するイメージについて説明をします。
Excelで重複データがあるリストデータを用意します。
リストの中で2件以上あるデータを1件のみにするよう処理していきます。
方法としては、データタブにある重複の削除ボタンを使った方法となります。
結果です。
次に重複を削除するショートカットで操作を行い、より短時間で操作をします。
最後にVBAを使い、同じく重複の削除処理をし、
重複削除結果を指定できるようにしていきます。
それでは早速使ってみましょう!
重複データを削除したいデータを用意する
まずは、重複データを削除したいリストデータを用意しましょう。
データの内容はなんでもよいですが、重複する文字列を2個以上いれるようにしてください。
サンプルは以下のようにしました。
標準機能で重複データを削除する
標準機能で重複データを削除してみましょう。
重複データがあるセルを選択する
重複データがあるセルを選択します。
重複データを消去する
「データ」タブのデータツール項目にある重複の削除をクリックし実行します。
「重複の削除」ウイザードが表示されたら重複削除したい条件の列を選択しOKをクリックします。
はい、こちらでユニークなデータになりましたね。
重複データを削除するショートカット
重複データを削除するショートカットは以下の通りです。
データを選択
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」となります。
抽出結果の出力先を指定します。サンプルは「D2:E12」となります。
重複検索リストから重複分を削除する設定をします。
Columnが1つ目の場合はColumn=1、複数ある場合はArray(1, 2, 3,**)としてください。
選択範囲の1行目がタイトル名で重複削除対象にしたくない場合は「Header:=xlYes」としてください。
VBAを実装し実行する
VBAを実装し実行してみましょう。
実装方法は「VBAの実装手順」をご覧ください。
実装できたらマクロから「重複文字を抽出し結果を出力する」を見つけ実行します。
はい、重複文字列が出力されましたね!
また、出力先の位置を設定でカンタンに変えることができます。
サンプルでは出力先を「D7:E17」としています。
VBAの説明
Excelで重複したデータを削除するVBAについて説明をします。
元の重複検索リストを配列へ格納します。
重複削除リスト作業用のオブジェクトを作成します。
重複検索リストをコピーします。
重複検索リストを作業用セルに貼り付けます。
重複検索リストから重複分を削除します。
VBAの実装手順
実装手順は以下の通りです。
今回はExcel側にこのVBAを実装します。
①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。
②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。
③右ペインのウインドウに上記のVBAを入力します。
こちらで完了です。
VBAを実行する
では早速VBAの実行をしてみましょう。
①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。
②処理がされたことが確認できれば完了です。
※完了メッセージやステータス管理など必要に応じて実装してもらえばと思います。
さいごに
いかがでしょうか。
今回は、
Excelで重複したデータを削除する方法とVBAで瞬間に処理する方法について
まとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す