📘 Excel逆引き事典

【VBA】数式エラー(#N/A等)を含むデータを別ブックとして保存する方法

日々の業務で大量のデータを扱っていると、計算結果が#N/Aなどの数式エラーになることがあります。これらのエラーデータを一覧化し、他のユーザーと共有するために、VBAを使って簡単に別のブックに保存することができます。

サンプルコード

VBA
Option Explicit
Sub SaveErrorCellsToNewWorkbook()
    Dim wb As Workbook, wsSource As Worksheet, wsTarget As Worksheet
    Dim lastRow As Long, i As Long
    
    ' ソースワークシートを指定
    Set wsSource = ThisWorkbook.Sheets("Sheet1")
    
    ' 新規ブックを作成
    Set wb = Workbooks.Add
    Set wsTarget = wb.Sheets(1)
    
    ' 画面更新を停止して処理速度を向上させる
    Application.ScreenUpdating = False
    
    ' 最終行を取得
    lastRow = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row
    
    ' タイトル行のコピー
    wsTarget.Range("A1:C1").Value = wsSource.Range("A1:C1").Value
    
    ' データをコピーし、エラーのみを新規ブックに保存
    For i = 2 To lastRow
        If IsError(wsSource.Cells(i, 1).Value) Or IsError(wsSource.Cells(i, 2).Value) Then
            wsTarget.Rows(wsTarget.Rows.Count).End(xlUp).Offset(1).Resize(1, 3).Value = wsSource.Range("A" & i & ":C" & i).Value
        End If
    Next i
    
    ' 画面更新を再開
    Application.ScreenUpdating = True
    
    ' 新規ブックの保存と表示
    wb.SaveAs ThisWorkbook.Path & "\ErrorCells.xlsx"
    wb.Activate
End Sub

よくある質問

Q 元に戻せますか?

A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。

Q エラーが出たら?

A.
シート名や列番号が正しいか確認してください。