Excel VBA 重複のないデータを別シートに抽出する

スポンサーリンク
スポンサーリンク

重複のないデータを別シートに抽出する方法

データのレコード(行)にすべて内容が同じデータが存在していた場合、フィルターオプション機能のAdvancedFilter【アドバンスドフィルター】メソッドで、重複しているデータの重複分を除いたデータを抽出することができます。

AdvancedFilter【アドバンスドフィルター】メソッド

AdvancedFilterメソッドは、フィルターのオプション機能でセルに入力された、条件を元に、その値と一致した値が含まれるレコードを抽出します。

AdvancedFilter【アドバンスドフィルター】メソッドの書式

[]内は省略可能です。
オブジェクト.AdvancedFilter(Action[, CriteriaRange, CopyToRange, Unique])


設定値(引数)の説明

  • オブジェクト(必須)
    抽出元となるセル範囲をRangeオブジェクトで指定します。
  • Action【アクション】(必須)
    抽出先をxlFilterAction列挙型の定数で指定します。

    xlFilterAction列挙型の定数
    定数内容
    xlFilterInPlace1抽出元の表を折りたたんで表示します。
    xlFilterCopy2引数CopyToRangeで指定したセル範囲に
    データをコピーして抽出します。
  • CriteriaRange【クライテリアレンジ】(省略可)
    ワークシート上に作成した抽出条件を指定します。省略した場合は、抽出条件なしとみなされます。
  • CopyToRange【コピートゥレンジ】(省略可)
    引数ActionがxlFilterCopyのとき有効になり、抽出先となるセル範囲を指定します。
  • Unique【ユニーク】(省略可)
    Trueを指定した場合は重複しているデータは抽出されません。省略した場合はFalseが指定され重複データも抽出されます。

重複のないデータを別のシートに抽出するコード

Sub advans()
 Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = "重複無"
 Sheets(1).Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _
 CopyToRange:=Sheets("重複無").Range("A1"), Unique:=True
End Sub

コードの解説

このコードでは、レコード内すべての値が重複している場合に、重複があると判断されます。


2行目【 Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = “重複無” 】
Worksheets【ワークシーツ】コレクションのAdd【アド】メソッドで新しいワークシートを追加して
追加したWorksheet【ワークシート】オブジェクトのName【ネーム】プロパティで、シート名を「重複無」に設定します。


3行目【Sheets(1).Range(“A1”).CurrentRegion.AdvancedFilter Action:=xlFilterCopy,_
CopyToRange:=Sheets(“重複無”).Range(“A1”), Unique:=True 】
Range【レンジ】オブジェクトのCurrentRegion【カレントリージョン】プロパティで、A1セルから始まるデータ範囲を参照して、AdvancedFilterメソッドを実行します。第二引数CriteriaRange【クライテリアレンジ】(抽出条件)を省略して、第四引数のUnique【ユニーク】をTrueにすることにより重複データを削除しています。第三引数のCopyToRange【コピートウレンジ】(貼り付け先)を追加した重複無シートに設定しています。


実行結果


重複データを削除する方法はこちらをご覧ください。
以上で、重複のないデータを別シートに抽出する方法の解説を終了します。
ありがとうございました。

スポンサーリンク
スポンサーリンク

フォローする

スポンサーリンク
スポンサーリンク