なぜ「削除」ではなく「非表示」なのか
大量のデータから手作業で重複行を探し出す作業は、非常に手間と時間がかかりますよね。
「重複データを整理したいけれど、万が一に備えて元のデータは削除せず残しておきたい」
そんなふうにお悩みの方も多いのではないでしょうか?
Excelには標準機能で「重複の削除」機能がありますが、実行すると元のデータそのものが消えてしまいます。後から「やっぱりあのデータ必要だった!」となると大変ですよね。
VBAを活用して対象の行を「非表示」に留める方法であれば、元のデータは安全に保持されます。ワンクリックでいつでも元の表示に戻せるため、安心して作業を進められます。
コピペでOK!重複行を非表示にするVBAコード
以下のコードをVBAエディタに貼り付けるだけで使えます。A列を基準に重複をチェックし、2回目以降に出てきたデータを非表示にします。
Sub HideDuplicateRows()
' 画面更新を止めて処理を高速化します
Application.ScreenUpdating = False
Dim lastRow As Long
Dim i As Long
Dim checkRange As Range
' 1. A列の最終行を取得します
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
' 2. 下の行から順番にチェックしていきます
For i = lastRow To 2 Step -1
' 基準となるセル
Set checkRange = Range("A1:A" & i - 1)
' 3. もし上の行に同じ値があったら、その行を非表示にします
If Application.WorksheetFunction.CountIf(checkRange, Cells(i, 1).Value) > 0 Then
Rows(i).EntireRow.Hidden = True
End If
Next i
' 画面更新を再開します
Application.ScreenUpdating = True
MsgBox "重複行の非表示が完了しました!", vbInformation, "完了"
End Sub
' --- 全ての行を再表示するコード(リセット用) ---
Sub ShowAllRows()
Cells.EntireRow.Hidden = False
MsgBox "全ての行を再表示しました。", vbInformation, "リセット完了"
End Sub
使い方3ステップ
- Excelで Alt + F11 を押して、VBAの画面を開きます。
- 「挿入」→「標準モジュール」を選び、上のコードを貼り付けます。
- F5 キーを押すか、Excel画面にボタンを作って登録すれば実行完了です!
最初から100点の完璧なシステムを作る必要はありません。まずは「今日の自分の作業が5分短縮できた!」という成功体験を積み重ねていただければと思います。
このコードを使えば、今まで目を皿のようにして探していた時間がなくなります。
ぜひ試してみてください!
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。
リンク
リンク

コメント