- ベストアンサー
Excelマクロで重複セルを削除する方法
- Excelマクロを使用して、重複するセルを削除する方法について質問があります。現在、E列に重複するデータがある場合に、一意のデータのみを残すようにしたいと考えています。
- 現在、E列にはいくつかの重複するデータが存在していますが、E4列以降のデータのみが削除されています。具体的には、E4セルの値がE3セルの値と同じであれば、E4セルを削除するという処理を行っています。
- ただし、lastRow To 2 Step -1という言葉の意味について確認しています。この表現は、ループ処理の開始行と終了行を指定するものであり、lastRowがE列の最終行の行番号を示しています。Step -1は、ループのステップ(増加量)を指定しており、負の値であるため、逆向きにループを実行することを意味しています。つまり、E列の最終行から2行目まで、1行ずつ逆順に処理を行うということです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは! >E4列から下のデータしか重複セルが削除されません の原因と >lastRow To 2 Step -1はどういう意味なのでしょうか? の意味はすでに回答されていますので・・・ 一例です。 Sub test() Dim i As Long For i = Cells(Rows.Count, 5).End(xlUp).Row To 2 Step -1 If WorksheetFunction.CountIf(Range(Cells(1, 5), Cells(i, 5)), Cells(i, 5)) > 1 Then Cells(i, 5).Delete (xlUp) End If Next i End Sub ※ 行すべてを削除ではなく、E列セルのみ削除がご希望ですよね? ※ 重複行すべてを削除の場合は >Cells(i, 5).Delete (xlUp) を >Rows(i).Delete (xlUp) としてみてください。 こんな感じではどうでしょうか?m(__)m
その他の回答 (1)
- hallo-2007
- ベストアンサー率41% (888/2115)
>ここでいうlastRow To 2 Step -1はどういう意味なのでしょうか? については http://officetanaka.net/excel/vba/tips/tips14.htm の最後の方に説明されています。 >E4列から下のデータしか重複セルが削除されません。 記述されているコードでは 同じ内容が、連続してある場合に削除ではないでしょうか? If Cells(i, 5).Value = Cells(i - 1, 5).Value Then の部分の意味をよく考えて見てください。 重複を削除する方法が http://www.eurus.dti.ne.jp/yoneyama/Excel/vba/vba_jyufuku.html にいくつも説明されていますが わかりやすいのは、フィルターオプションの機能を利用した方法ではないでしょうか。