「重複データがいっぱいあって手作業じゃ追い付かない」
「重複データ削除の時に優先して残したいデータがあるんだけど…」
「重複してるデータをすべて削除したい!」
表をまとめた時などによく出てくる「重複データ」。
一つ一つ照合しながら手で削除するのはとても大変ですよね。
こんな時に簡単に思い通り重複データを削除できたなら…。
ここでは重複データ削除の基本手順や関係する応用テクニック、そして重複削除をボタン一つで行えるマクロコードまで解説します。
これで今日からすぐに、簡単に重複データを削除できるようになりますよ!
1.重複データ削除の基本手順
では始めに重複データ削除の基本手順から見てみましょう。
重複データの削除には、「重複の削除」機能を使った方法と関数を使った方法の2種類があります。
1-1.「重複の削除」機能の使い方
例えば次のような表があったとします。
この時「氏名」で重複しているデータを削除しようとした場合、機能を使った重複の削除は次のように行います。
(1)表全体を選択する(分かりやすいよう重複部分を色分けして表示)
(2)「データ」タブにある「重複の削除」をクリックする
(3)重複をチェックしたい項目のみにチェックマークをつけ、OKボタンを押す
(4)OKボタンを押す
(5)完了
このようにすれば簡単に重複データが行ごと削除されます。
元の表からデータが削除されても構わない時にこの方法を使いましょう。
なお、複数チェックをつけると「全て重複」している場合にのみデータが削除されます。
ちなみに一つ注意することがあります。
それは「スペースは全角と半角で区別される」ことです。
例えば「〇〇 〇」と「〇〇 〇」は違うものとして処理されるということです。
気を付けましょう。
1-2.関数を使った重複データの削除の仕方
次にCOUNTIF関数とフィルター機能を使った重複の削除の方法を試してみましょう。
(1)E列を作業列としてタイトルを入れ、セルE2に「=COUNTIF($B$2:$B2,B2)」と入力する
(2)セルE2の右下にカーソルを当て、「+」マークになったらセルE11まで左クリックを押しながら引っ張る
(3)セルA1からE1までのタイトル行を選択する
(4)右クリックし、「フィルター」をクリックして「選択したセルのアイコンでフィルター」を選択する
(5)セルE1にある▼をクリックし、「1」のみにチェックを入れる
(6)表示された表全体を選択し、右クリックして「コピー」をクリックする
(7)任意の場所に張り付ければ完了
このようにすれば重複分をいた表が出来上がります。
なお、複数条件としたい場合には、セルE2に入れる数式にCOUNTIFS関数を使い、例えば「氏名」と「出身県」であれば数式は「=COUNTIFS($B$2:$B2,B2,$C$2:$C2,C2)」となります。
これによって二つの条件のどちらにも当てはまるか?でカウントがされます。
試してみてください。
2.重複データ削除の応用テクニック!
続いて重複データ削除の応用テクニックを紹介します。
「優先して残したいデータがある場合」や「重複したら両方削除したい場合」についてみてみましょう。
2-1.優先して残したいデータがある時はこうする!
優先して残したいデータがあった時、重複チェックの際2番目以降にあると削除されてしまいます。
その時には並び替えで上のほうに移動させてから「重複の削除」を行いましょう。
例えば先ほどの表で「受講日」の新しいものを残したい場合には、次のように行います。
(1)表全体を選択する(分かりやすいよう氏名の重複を色分けして表示)
(2)右クリックを押し、「並び替え」をクリックして「ユーザー設定の並び替え」を選択する
(3)列は「受講日」、順序は「降順」を選択する(古いものを上にしたい場合には「昇順」)
(4)以下、「重複の削除」機能手順(2)以降を行って重複を削除すれば完了
「重複の削除」は一番上にあるデータを残します。
ですからこのように並び替えを行ってから使用しましょう。
2-2.重複したら両方削除したいときには?
次に重複データは両方消したい時の手順です。
この場合には先ほど解説した関数を使った方法を用いて、重複がないデータは「1」、重複がある場合には「2以上」となるよう数式を入れます。
実際にやってみましょう。
(1)E列を作業列としてタイトルを入れ、セルE2に「=COUNTIF($B$2:$B$11,B2)」と入力する
(2)セルE2の右下にカーソルを当て、「+」マークになったらセルE11まで左クリックを押しながら引っ張る
(3)以下、関数を使った重複削除手順(3)以降を行って重複を削除すれば完了
これで重複のないデータだけが取り出せます。実際にやってみてください。
3.重複データ削除のマクロコードはこれだ!
最後に重複データを削除できるマクロコードを紹介します。
先ほどの表を使ってやはり「氏名」の重複をチェックし削除してみましょう。
(1)「Alt」+「F11」キーを押し、Visual Basicを開く
(2)左のツリー上で右クリックを押し、「挿入」→「標準モジュール」を選択する
(3)追加されたModule1に、「Sub~End Sub」までの以下のコードを張り付ける
maxRow = Cells(Rows.Count, 1).End(xlUp).Row
'データの最終行を取得(下線部分「1」はデータが入っている列番号のいづれか(仮にD2からF20までの表であれば4(D)か5(E)か6(F)))
Range("A1:D" & maxRow).RemoveDuplicates (Array(2))
’(下線部分「A1:D」は表の場所を指定(仮にD2からF20までの表であれば「D2:F」)、「2」は重複をチェックしたい列番号(仮にE列の重複をチェックしたい場合には5(E))
End Sub
※下線部分を表の場所に応じて変更する必要あり
(4)シート名を入力したいセルを選択し、「Alt」+「F8」キーを押した後「重複データの削除」を選択して「実行」を押す
(5)完了
これで簡単に重複部分を削除することができます。ただしマクロは「元に戻す」ことができません。
実行する前には必ず「保存」をしてから行ってください。
4.まとめ
以上エクセルの重複削除について、基本手順から応用テクニック、マクロコードまで紹介しました。
もしこれまで手作業で行っていたとしたら、これで作業効率はぐっと上がります。
繰り返し使うことで身につけるようにしましょう!
コメント