← コード一覧へ戻る
実務検索・集計

重複している行を削除する

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

実行前のサンプル。列記号と行番号でセルの位置を確認できます。
ABC
1商品ID商品数量
2P01りんご3
3P02みかん2
4P01りんご8

実行後

Sheet1

実行後のサンプル。列記号と行番号でセルの位置を確認できます。
ABC
1商品ID商品数量
2P01りんご3
3P02みかん2
4—(注目セル)——

色付きは注目する場所です。「—」は未入力、「(空文字)」は数式などが返す空の文字列を表します。

確認で「はい」を選んだ例。A5以降は未入力。数量が異なってもA列のP01が同じなので後の行は削除されます。処理対象はA:Cの範囲であり、シート行全体の削除ではありません。 強調は注目するセルの目印です。実際のセルの色・書式を再現するものではありません。

使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
  1. 1

    Windows版のデスクトップExcelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]に、この例だけを貼り付けます。

  2. 2

    Sheet1のA1:C最終行に練習用の表を用意します。1行目は見出し、A列は管理番号にします。処理前のブックを別名でコピーしておきます。

  3. 3

    実行するSubの内側にカーソルを置き、F5キーを押します。 確認画面の対象範囲を読み、処理してよい場合だけ[はい]を押します。

  4. 4

    A列の管理番号が重複するレコードは先頭の1件が残り、A:C内で詰められます。D列以降やワークシートの行全体を削除する処理ではありません。

使っている機能の公式ドキュメント(Microsoft Learn)