【Excel VBA】重複データを削除する方法(RemoveDuplicates)

りゅう
こんにちは!りゅう(@ryupong_b)です。
今回は、「セルの重複データ削除」について解説していきます。
はじめに

セルの重複データを削除する際は、RangeオブジェクトのRemoveDuplicatesメソッドがオススメです!
具体的な使用方法を解説しますので、ぜひ最後までお付き合いください。

この記事を読むメリット
  • セルの重複データを削除する方法が分かります。
  • RemoveDuplicatesメソッドの引数など、詳細な使い方を解説します。
めい
結論だけ知りたい方は、目次からサンプルコード欄をクリックしてください。

使用する機能について

データの重複削除は、RangeオブジェクトのRemoveDuplicatesメソッドを使用します。

まずは、メソッドの構文や引数をご紹介します。

 

RemoveDuplicatesメソッド

構文

構文

Range.RemoveDuplicates(Columns , Header)

引数

# 引数 必須 詳細
1 Columns 重複を削除したい列の位置を指定します。
2 Header 最初の行をヘッダとして扱うかを指定します。
※定数を指定。詳細は後述します。

定数(Header引数)

# 定数 規定値 詳細
1 xlGuess 0 ヘッダがあるかどうかをExcelが判断します。
※ヘッダがあると判断された場合はxlYesと同様の挙動をします。
2 xlYes 1 1行目をヘッダと判断し、重複削除の範囲対象外となります。
3 xlNo 2 範囲全体を重複削除の範囲対象となります。

サンプルコード

前提

説明の前提として、Sheet1とSheet2に同様の内容の表が存在することを前提とします。


重複データ削除(単一列指定)

サンプルコード

サンプルコード


Public Sub execRemoveDuplicatesForArgSingle()

    ' [Sheet1]シートのA列(1列目)に対してデータ重複を削除する
    ThisWorkbook.Worksheets("Sheet1").Range("A1").CurrentRegion.RemoveDuplicates _
        Columns:=1, Header:=xlYes

    ' [Sheet2]シートのB列(2列目)に対してデータ重複を削除する
    ThisWorkbook.Worksheets("Sheet2").Range("A1").CurrentRegion.RemoveDuplicates _
        Columns:=2, Header:=xlYes

End Sub

りゅう
補足となりますが、セルA1を指定することでExcelが自動で表の範囲を識別してくれます。

実行結果

Sheet1

Sheet2

めい
Sheet2の1列目は「りんご」が重複しているよね。
りゅう
2列目の重複のみを削除しているので、1列目の重複は残ったままになります。
次項では、複数列を指定して削除する方法をご紹介します。

重複データ削除(複数列指定)

サンプルコード

サンプルコード
Public Sub execRemoveDuplicatesForArgMulti()

    ' [Sheet1]シートのA列(1列目と2列目)に対してデータ重複を削除する
    ThisWorkbook.Worksheets("Sheet1").Range("A1").CurrentRegion.RemoveDuplicates _
        Columns:=Array(1, 2), Header:=xlYes

End Sub

実行結果

りゅう
「商品名:ばなな / 在庫:20」の列が削除されましたね。

最後に

いかがでしたでしょうか。
繰り返し処理などを用いて自前で重複を削除するよりも、本機能を使用した方が高速で安全です!

この記事が、読者さまのお力になれれば嬉しいです!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

大手外資系コンサルティングファーム勤務。ExcelVBA歴は8年。金融関係のプロジェクトにて約100万レコードを処理するマクロの開発実績あり。ExcelVBAの基礎・応用情報を発信中。

コメント

コメントする

CAPTCHA