重複している行を削除する
Sheet1のA1:C最終行を対象に、A列の管理番号が重複するレコードを先頭の1件だけ残して詰めます。
実行前に確認
- ワークシートの行全体を削除する処理ではありません。A:C内だけが詰まるため、D列以降に関連データがある場合は対象範囲を広げてください。
- 先にブックをコピーしてください。1行目は見出しとして残します。A列の空白も重複判定の対象になります。
1サンプルコード
Sub 重複行を削除する()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
If lastRow < 2 Then Exit Sub
If MsgBox("Sheet1のA1:C" & lastRow & "を変更しますか?", vbYesNo + vbExclamation + vbDefaultButton2) <> vbYes Then Exit Sub
ws.Range("A1:C" & lastRow).RemoveDuplicates _
Columns:=1, _
Header:=xlYes
End Sub表で見る処理のイメージ実行前・実行後のセルを見比べる
A列が同じ行を重複とみなし、最初の行を残します。
A・B・Cは列、1・2・3は行です。例えば「B2」はB列の2行目のセルです。この表は説明用のサンプルです。
実行前
Sheet1
| A | B | C | |
|---|---|---|---|
| 1 | 商品ID | 商品 | 数量 |
| 2 | P01 | りんご | 3 |
| 3 | P02 | みかん | 2 |
| 4 | P01 | りんご | 8 |
実行後
Sheet1
| A | B | C | |
|---|---|---|---|
| 1 | 商品ID | 商品 | 数量 |
| 2 | P01 | りんご | 3 |
| 3 | P02 | みかん | 2 |
| 4 | —(注目セル) | — | — |
色付きは注目する場所です。「—」は未入力、「(空文字)」は数式などが返す空の文字列を表します。
確認で「はい」を選んだ例。A5以降は未入力。数量が異なってもA列のP01が同じなので後の行は削除されます。処理対象はA:Cの範囲であり、シート行全体の削除ではありません。 強調は注目するセルの目印です。実際のセルの色・書式を再現するものではありません。
使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
- 1
Windows版のデスクトップExcelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]に、この例だけを貼り付けます。
- 2
Sheet1のA1:C最終行に練習用の表を用意します。1行目は見出し、A列は管理番号にします。処理前のブックを別名でコピーしておきます。
- 3
実行するSubの内側にカーソルを置き、F5キーを押します。 確認画面の対象範囲を読み、処理してよい場合だけ[はい]を押します。
- 4
A列の管理番号が重複するレコードは先頭の1件が残り、A:C内で詰められます。D列以降やワークシートの行全体を削除する処理ではありません。