動画で3行マクロ解説
Excelの3行マクロ~すぐに使えるミニマクロ11回です。
今回は データ集計時の 困った ナンバーワン 重複行の削除です。 データが重複していると正確な集計ができません。
しかし 大量のデータを複数で入力するケースなどでは起こりがちです。
重複業を除いて集計するためには 、 元のデータはそのまま取っておいて重複行だけを非表示にするとか、 あるいは非表示しないで完全に削除するとかの場合によって使い分ける必要があるかもしれませんけれども、 今回のケースでは完全に 削除します。
複数列からなる1行のデータ のすべてが一致した場合に削除と言う パターンです。
それでは、4列からなる表で全部一致しないと重複としないケースと、それ以外で、指定した2列や3列が一致したら重複とする場合などでは、どのように書き分けたらよいのでしょうか。
VBAでは重複するかどうかの判定をする列にArray(配列)を使っています。4列の表で4列すべて指定するなら、Array(1,2,3,4)などとするわけです。
それで、日付は同じでなくてもいいという場合、1列が日付なら、Array(2,3,4)というような指定です。
3行マクロの重複を削除する動画内で紹介したVBAコード
'==============================================================
'=3行マクロ講座入門編 11回 https://kokodane.com/
'==============================================================
Sub 重複削除()
Selection.AdvancedFilter Action:=xlFilterInPlace, Unique:=True
Selection.Copy
Sheets.Add After:=ActiveSheet
ActiveSheet.Paste
End Sub
Sub 重複削除2()
ActiveCell.CurrentRegion.Select
Selection.RemoveDuplicates Columns:=Array(1, 2, 3, 4), Header:=xlYes
End Sub
Sub 重複削除3()
ActiveSheet.Range("B:E").RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes
End Sub
Sub 重複削除4()
Dim lastR As Long
lastR = Cells(Rows.Count, 2).End(xlUp).Row
Range("B2", "E" & lastR).RemoveDuplicates Columns:=Array(1, 2, 3, 4), _
Header:=xlYes
End Sub