※当サイトはアフィリエイト広告を利用しています。
Excelでデータの重複を削除するには、通常、以下のような手順を踏まなければいけません。
- 重複する値を持つ範囲を選択する
- 「データ」タブ>「重複の削除」を選択する
- 重複する値を持つ列にチェックを入れ、「OK」を選択する
たまにしかしない場合はこの方法でもいいですが、頻繁にする場合はこの方法だと手順が多くて面倒です。
そこで今回は、重複するデータをボタン1つで削除するマクロをご紹介します。
このマクロを使えば、通常の手順を大幅に省略して重複削除を行うことができます。
なお、今回ご紹介するマクロでは、
選択中のシートの指定したテーブルの指定した列の中で重複をチェックし、重複があれば上の値を残し、下の値を削除する
といったことができます。
それでは、マクロのコードやマクロの使い方などをご紹介します。
重複するデータをボタン1つで削除するマクロのコード
今回ご紹介するマクロは、以下の2種類です。
メッセージなし | 重複がなかった場合や重複削除完了後に何のメッセージも表示されず、ただ処理が実行される |
---|---|
メッセージあり | 重複がなかった場合に「重複はありません」というメッセージが、重複削除完了後に「重複を削除しました」というメッセージが表示される |
どちらもコピペOKですが、使用は自己責任でお願いします。
メッセージなし
メッセージなしverは以下のようなコードになります。メッセージありverより簡潔です。
Sub 重複削除()
ActiveSheet.ListObjects(1).Range.RemoveDuplicates Columns:=1, Header:=xlYes
End Sub
対象のテーブルが選択中のシートの1つ目のテーブルじゃない場合は、「ActiveSheet.ListObjects(★)」の★を変更してください(例:2つ目のテーブルなら「2」)。
重複をチェックしたい列がテーブルの1列目じゃない場合は、「Columns:=★」の★を変更してください(例:3列目なら「3」)。
メッセージあり
メッセージありverは以下のようなコードになります。
Sub 重複削除()
Dim myList As ListObject
Dim myNumber As Long
Dim myRange As Range
Dim i As Long
Set myList = ActiveSheet.ListObjects(1)
myNumber = 1
Set myRange = myList.ListColumns(myNumber).DataBodyRange
For i = myList.ListRows(1).Range.Row To _
myList.ListRows(myList.ListRows.Count).Range.Row
If WorksheetFunction.CountIf(myRange, Cells(i, myRange.Column)) _
> 1 Then
myList.Range.RemoveDuplicates Columns:=myNumber, Header:=xlYes
MsgBox "重複を削除しました。"
Exit Sub
End If
Next i
MsgBox "重複はありません。"
End Sub
対象のテーブルが選択中のシートの1つ目のテーブルじゃない場合は、「Set myList = ActiveSheet.ListObjects(★)」の★を変更してください(例:2つ目のテーブルなら「2」)。
重複をチェックしたい列がテーブルの1列目じゃない場合は、「myNumber = ★」の★を変更してください(例:3列目なら「3」)。
重複するデータをボタン1つで削除するマクロの使い方
マクロは以下のような手順で使用することができます。
- マクロを使用したいExcelファイルを開く
- [Alt]+[F11]でVBEを開く
- 「挿入」>「標準モジュール」を選択する
- 立ち上がったウィンドウにコードを貼り付ける
これでマクロを呼び出せるようになりました!
それでは次に、マクロを呼び出す実行ボタンを作りましょう。
Excelの画面に戻り、「開発」タブ>「挿入」>ボタン(フォームコントロール)を選択します。
セル上をドラッグしてボタンを作ります。
ボタンを作ったら「マクロの登録」ダイアログボックスが表示されるので、「重複削除」を選択し、「OK」を押します。
ボタン上で右クリック>「テキストの編集」を選択し、ボタンの表示名を変更します。
これで作業は終わりです。今後は「重複削除」ボタンを押すたび、選択中のシート>指定したテーブル>指定した列で重複の削除が行われます。
なお、元のファイル形式がxlsm形式じゃない場合は、「名前を付けて保存」からxlsm形式で保存する必要があります。
おわりに
いかがでしたか?
今回は、重複するデータをボタン1つで削除するマクロをご紹介しました。
頻繁にデータの重複チェックを行う方は、ぜひこのマクロをお役立てください。通常の手順で行うより短い時間で作業を終えることができますよ!