【Excel・VBA】重複データを削除する
例えば、A列に名前のデータが入っており、
重複した名前データを削除したいときは、
下記のコードを使います。
Range(“A:A”).RemoveDuplicates Columns:=1, Header:=xlYes
説明書きを加えると上記のようになります。
適応範囲の箇所にはRange(“A:A”)の形の他、
◆Range(Cells(1,1),Cells(1,1)).EntireColumn
◆Column(“A:A”)
これも可能です。
例題1(1行のみ重複データ検索・削除)
↑の例題①のようにA列に名前が羅列してあり、
A列のみを適応範囲、検索範囲とすると
サンプルコードは以下になります。
サンプルコード①
Range("A:A").RemoveDuplicates Columns:=1, Header:=xlYes
上記のコードを実行すると下記のような結果が得られます。
例題2(全列の内容まとめて重複データ検索・削除適応)
↑の例題では、「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)が削除されるとなりました。
例題3(一部の行を重複データ検索・全列削除適応)
例題②のExcelをそのまま使い、今度は
◆適応範囲 ・・・A:C
◆重複データを探す列・・・2,3列目(つまりB:C)
とすると、
【2列目(名前)】と【3列目(出身)】
これが一緒の行はA:C(適応範囲)が削除されます。
2列目と1列目の内容が一緒であれば1列目に何が記載されていても削除されます。
サンプルコードと結果は以下になります。
サンプルコード③
Range("A:C").RemoveDuplicates Columns:=Array(2, 3), Header:=xlYes
以上になります。
お役に立てれば幸いです。