【Excel・VBA】重複データを削除する
例えば、A列に名前のデータが入っており、
重複した名前データを削除したいときは、
下記のコードを使います。
Range(“A:A”).RemoveDuplicates Columns:=1, Header:=xlYes
![Excel_VBA_重複の削除_7](https://haginote.com/wp-content/uploads/2023/05/6b76008fea448082d803e09832993fba-1024x121.jpg)
説明書きを加えると上記のようになります。
適応範囲の箇所にはRange(“A:A”)の形の他、
◆Range(Cells(1,1),Cells(1,1)).EntireColumn
◆Column(“A:A”)
これも可能です。
例題1(1行のみ重複データ検索・削除)
![Excel_VBA_重複の削除_1](https://haginote.com/wp-content/uploads/2023/05/cd96298bae6acd7d7b9d819e7a171c12.jpg)
↑の例題①のようにA列に名前が羅列してあり、
A列のみを適応範囲、検索範囲とすると
サンプルコードは以下になります。
サンプルコード①
Range("A:A").RemoveDuplicates Columns:=1, Header:=xlYes
上記のコードを実行すると下記のような結果が得られます。
![Excel_VBA_重複の削除_2](https://haginote.com/wp-content/uploads/2023/05/e23fca1e979022c3da1d4c723e8f6413.jpg)
例題2(全列の内容まとめて重複データ検索・削除適応)
![Excel_VBA_重複の削除_3](https://haginote.com/wp-content/uploads/2023/05/241389070999b396fa154339c9fc7282.jpg)
↑の例題では、「No.」と「出身」を付けたしました。
サンプルコードはA・B・Cの3列すべてを
適応範囲・重複検索範囲とする場合、
つまり、
◆適応範囲 ・・・A:C
◆重複データを探す列・・・1,2,3列目(つまりA:C)
1~3列目の内容が全て同じモノ、その行のA:C(適応範囲)を
まるまる削除する事になります。
また、[ 重複データを探す列 ] に複数列を選択する場合は、
【Array】を使用します。具体的なサンプルコードは以下になります。
サンプルコード②
Range("A:C").RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlYes
2行目と3行目が全て同じ内容で重複している事が分かります。
得られる結果は2行目が残り、3行目の(A:C)が削除されるとなりました。
![Excel_VBA_重複の削除_4](https://haginote.com/wp-content/uploads/2023/05/142df784b533f3b84ebb16eaf1f21f08.jpg)
例題3(一部の行を重複データ検索・全列削除適応)
![Excel_VBA_重複の削除_8](https://haginote.com/wp-content/uploads/2023/05/b3bbe976c9216355a2d4d42b09848586.jpg)
例題②のExcelをそのまま使い、今度は
◆適応範囲 ・・・A:C
◆重複データを探す列・・・2,3列目(つまりB:C)
とすると、
【2列目(名前)】と【3列目(出身)】
これが一緒の行はA:C(適応範囲)が削除されます。
2列目と1列目の内容が一緒であれば1列目に何が記載されていても削除されます。
サンプルコードと結果は以下になります。
サンプルコード③
Range("A:C").RemoveDuplicates Columns:=Array(2, 3), Header:=xlYes
![Excel_VBA_重複の削除_5](https://haginote.com/wp-content/uploads/2023/05/47a2053f6f506779551194a26a6c6f7d.jpg)
以上になります。
お役に立てれば幸いです。