重複データを非表示するマクロ
3行マクロ 18回
重複データを非表示するマクロ
「Excel 2013 基本技44回 重複データを非表示にする」で重複データを非表示する方法を紹介しましたが、非表示するだけで、重複データを削除したわけではありません。今回は、マクロの記録によって、重複データを非表示にしてから、別シートに結果のコピーを貼り付けるまでのマクロを作成します。
(サンプルファイルは、こちらから 3行マクロ18回サンプルデータ)
Excelバージョン:
マクロの記録でフィルタオプションの設定を
まず表全体を範囲選択してから、マクロの記録を開始します。
マクロの名前をつけ、保存先を個人用マクロブックにします。
Excel 2013 基本技44回 重複データを非表示にするの手順でデータタブをクリックして、並べ替えとフィルタグループにある、詳細設定をクリックします。
フィルタオプションの設定ダイアログボックスが表示されたら、重複するレコードは無視するにチェックを入れてOKをクリックします。
フィルタオプションの設定ダイアログボックスが表示されたら、重複するレコードは無視するにチェックを入れてOKをクリックします。
重複が非表示になった表をコピーして
シートを追加して、貼り付けます。
貼り付けたら、マクロの記録は終了します。
では、次に出来上がったコードを見てみましょう。
マクロの記録でフィルタオプションの設定
コードを見てみましょう
コードを見ると、マクロの記録で選択した範囲Range("B2:E26")を選択していますが、汎用的に使うために、Selectionに変更しましょう。
範囲をSelectionに変更して、もう1回範囲を選択している重複コードを削除しました。
マクロのコードです。
Sub 重複削除() Selection.AdvancedFilter Action:=xlFilterInPlace, Unique:=True Selection.Copy Sheets.Add After:=ActiveSheet ActiveSheet.Paste End Sub
コードを修正していますので、使用する時は、予め表全体を選択しておいてから、マクロを実行してください。
次は、重複行は、不要と判断して行ごと削除してしまいます。
次は、重複行は、不要と判断して行ごと削除してしまいます。
重複行を削除する
ここまでは、重複行を非表示にして、重複しない行だけを別シートにコピーするというマクロのコードを作成しました。
複数列からなる1行のデータ のすべてが一致した場合には、その行は不要であるとし削除します。
重複を削除するには
この場合は、データタブから、データツールグループにある、重複の削除をクリックします。
すると、重複の削除ダイアログが表示されるので、重複が含まれる列を選択します。今回は、列4つとも選択しています。
OKをクリックすると、重複行が削除されます。
マクロのコードは
この手順をマクロで記録します。コードは以下のようになりました。
Sub Macro2() Selection.CurrentRegion.Select ActiveSheet.Range("$B$2:$E$26").RemoveDuplicates Columns:=Array(1, 2, 3, 4), _ Header:=xlYes End Sub
このコードを汎用性の高いものにするために、以下のように修正します。列全体を選択することで、行数を意識しないで済みます。使うときは、そのデータの列をRangeで指定し、Arrayでどの列に重複があるのか指定してやります。
Sub 重複削除() ActiveSheet.Range("B:E").RemoveDuplicates Columns:=Array(1, 2, 3, 4), Header:=xlYes End Sub
動画で詳しく解説しています。