Home » エクセルマクロ・Excel VBAの使い方 » マクロのサンプル » 重複データを削除し重複のないリストを作成するマクロ−AdvancedFilterメソッド

重複データを削除し重複のないリストを作成するマクロ−AdvancedFilterメソッド

対象:Excel2002, Excel2003, Excel2007, Excel2010

「エクセル 重複データ削除 マクロ」
「Excel 重複しないリスト作成 マクロ」
といった検索が、このサイト・インストラクターのネタ帳で行われているのを見かけることがあります。

重複データを削除するマクロ、元データから重複しないデータだけのリストを作成するマクロを探している方の検索です。

Excelではフィルタ機能を使って重複データの削除、重複しないリストの作成ができます。

2003までのExcelならメニュー[データ]−[フィルタ]−[フィルタオプションの設定]から、Excel 2007・2010なら[データ]タブ−[データツール]グループ−[重複の削除]ボタンから操作することで重複データを削除できます。

[スポンサード リンク]

これらの機能を呼ぶマクロをVBA(Visutal Basic for Applications)で作れば、重複しないリストを作成するマクロを作ることもできます。


▼重複しないリストを作成するマクロ
Sub CreateUniqueList()

 On Error Resume Next

 Selection.AdvancedFilter _
  Action:=xlFilterCopy, _
  CopyToRange:=Application.InputBox(Prompt:="重複しないリストを作成するセルを選択してください。", Type:=8), _
  Unique:=True

End Sub

重複データを削除するマクロ、重複しないリストを作成するマクロといったときに、詳細な仕様はいろいろ考えられます。

例えば、元データを削除して重複しないリストを作成したいというケース、元データはそのままで新規ワークシートに重複しないリストを作成したいというケースなど。

いろいろな仕様が考えられるので、ここではコードがあまり長くならない形で、応用の効きそうなマクロをご紹介しておきます。

▼サンプルファイル(003690.xls 20KByte)ダウンロード

重複データの含まれているセル範囲を選択しておいて、上記のマクロを実行すると、
リストを作成する先を指定するダイアログが表示されますから、出力先セルを指定すると、重複しないリストが作成されます。

AdvancedFilterメソッドでフィルタをかけることができ、引数で具体的にどのようにフィルタするのかを指定してします。

元データはそのままで、別のセルにデータをコピーして重複しないリストを作成するために、引数・ActionにxlFilterCopyを指定して、引数・UniqueをTrueとしています。

どこに作成するかを指定する引数CopyToRangeでは、InputBoxメソッドを使ってダイアログボックスを表示しています。

Excelの標準の機能を呼んでいるだけのマクロですから、仕様はExcelのフィルタ機能に準じています。

元データの1行目は必ず見出し項目として認識されます。

エラーも、フィルタ機能で発生するエラーはそのまま発生します。例えば、セルが一つしか選択されていない状態や、連続していない複数のセルを選択して上記のマクロを実行するとエラーとなります。

またInputBoxで[キャンセル]ボタンをクリックしたときもエラーとなります。

こういったエラーをここではとりあえず全部無視してしまおうと
「On Error Resume Next」
を入れてあります。

Home » エクセルマクロ・Excel VBAの使い方 » マクロのサンプル » 重複データを削除し重複のないリストを作成するマクロ−AdvancedFilterメソッド

[スポンサード リンク]

トラックバック:0

TrackBack URL

Home » エクセルマクロ・Excel VBAの使い方 » マクロのサンプル » 重複データを削除し重複のないリストを作成するマクロ−AdvancedFilterメソッド

「マクロのサンプル」の記事一覧

検索

このページの上部へ戻る

.