【Excel・VBA】重複データを削除する

例えば、A列に名前のデータが入っており、
重複した名前データを削除したいときは、
下記のコードを使います。

Range(“A:A”).RemoveDuplicates Columns:=1, Header:=xlYes

Excel_VBA_重複の削除_7
[Header] の指定をしないと、デフォルトの値は「No」になりますのでご注意ください。

説明書きを加えると上記のようになります。
適応範囲の箇所にはRange(“A:A”)の形の他、

◆Range(Cells(1,1),Cells(1,1)).EntireColumn
◆Column(“A:A”)

これも可能です。
 

広告

例題1(1行のみ重複データ検索・削除)

Excel_VBA_重複の削除_1
例題①

↑の例題①のようにA列に名前が羅列してあり、
A列のみを適応範囲、検索範囲とすると
サンプルコードは以下になります。
 

サンプルコード①

Range("A:A").RemoveDuplicates Columns:=1, Header:=xlYes

上記のコードを実行すると下記のような結果が得られます。

Excel_VBA_重複の削除_2

 

例題2(全列の内容まとめて重複データ検索・削除適応)

Excel_VBA_重複の削除_3
例題②名前の両サイドに「No.」と「出身」を付け加えました

↑の例題では、「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
一部の行を重複データ検索・全列削除適応

 

例題3(一部の行を重複データ検索・全列削除適応)

Excel_VBA_重複の削除_8
先程の例題②と同じ内容

例題②の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

以上になります。
お役に立てれば幸いです。

広告