VALUE! や #DIV/0! を一括抽出!エラーセルだけを別シートにコピーするExcelVBA【コピペOK】

ExcelVBA

「どこかにエラーがあるけど、見つけにくい…」
「#DIV/0! や #REF! などのセルだけをまとめたい!」

そんなときに役立つのが、ワークシート内の「エラーセル」だけを抽出して別シートにまとめるVBAコードです。

今回は、エラーを見つけて一覧化し、該当セルの位置も表示する実用コードをご紹介します!

このExcelVBAコードはこんな方におすすめです!!

  • シート内のエラーを一括チェックしたい方
  • 計算ミスや参照ミスを自動で抽出したい方
  • エラー位置を一覧にして確認・修正したい方
Sub ExtractErrorCells()
    Dim ws As Worksheet
    Dim destWs As Worksheet
    Dim rng As Range, cell As Range
    Dim lastRow As Long, lastCol As Long
    Dim outputRow As Long

    Set ws = ActiveSheet

    ' 出力先シートを準備(存在しない場合は新規作成)
    On Error Resume Next
    Set destWs = Worksheets("エラー一覧")
    If destWs Is Nothing Then
        Set destWs = Worksheets.Add
        destWs.Name = "エラー一覧"
    Else
        destWs.Cells.ClearContents
    End If
    On Error GoTo 0

    ' ヘッダー作成
    destWs.Range("A1:C1").Value = Array("セル位置", "エラー内容", "セルの値")
    outputRow = 2

    ' データ範囲を取得(UsedRange)
    Set rng = ws.UsedRange
    For Each cell In rng
        If IsError(cell.Value) Then
            destWs.Cells(outputRow, 1).Value = cell.Address
            destWs.Cells(outputRow, 2).Value = CVErr(cell.Value)
            destWs.Cells(outputRow, 3).Value = cell.Text
            outputRow = outputRow + 1
        End If
    Next cell

    MsgBox "エラーセルを「エラー一覧」シートに抽出しました!", vbInformation
End Sub
カスタマイズ例
カスタマイズ内容方法
特定のエラーだけ抽出したいIf cell.Text = "#DIV/0!" Then ... などで絞る
元シート名を記載したいdestWs.Cells(...).Value = ws.Name を追加
すべてのシートを対象にしたいFor Each ws In Worksheets ... に拡張可能
該当セルに色をつけたいcell.Interior.Color = RGB(255, 200, 200) を追加

Excelでエラーが混ざっていると、ミスに気づきにくくなります。
でもVBAを使えば、一瞬で「どこに何のエラーがあるか」を一覧で確認できます。

このコードは、日常のエラーチェックや報告資料の精度向上に役立つ便利スクリプトです。
今後も「実務でそのまま使えるVBAコード」を紹介していきますので、「こんなコードが欲しい!」などあれば、ぜひコメントください!!

コメント

タイトルとURLをコピーしました