重複のないデータを別シートに抽出する方法
データのレコード(行)にすべて内容が同じデータが存在していた場合、フィルターオプション機能のAdvancedFilter【アドバンスドフィルター】メソッドで、重複しているデータの重複分を除いたデータを抽出することができます。
AdvancedFilter【アドバンスドフィルター】メソッド
AdvancedFilterメソッドは、フィルターのオプション機能でセルに入力された、条件を元に、その値と一致した値が含まれるレコードを抽出します。
AdvancedFilter【アドバンスドフィルター】メソッドの書式と設定値(引数)の説明
[]内は省略可能です。
オブジェクト.AdvancedFilter(Action[, CriteriaRange, CopyToRange, Unique])
- オブジェクト(必須)
抽出元となるセル範囲をRangeオブジェクトで指定します。 - Action【アクション】(必須)
抽出先をxlFilterAction列挙型の定数で指定します。xlFilterAction列挙型の定数 定数 値 内容 xlFilterInPlace 1 抽出元の表を折りたたんで表示します。 xlFilterCopy 2 引数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【コピートウレンジ】(貼り付け先)を追加した重複無シートに設定しています。
実行結果
重複データを削除する方法はこちらをご覧ください。
以上で、重複のないデータを別シートに抽出する方法の解説を終了します。ありがとうございました。