【Excelマクロ】エラーデータだけをまとめてリストアップするチェックマクロ

データ入力のチェックは、多くの現場で発生する定型作業のひとつです。

たとえば、次のような課題はありませんか?

  • 数が合わない明細だけ確認したい
  • 未入力の行だけ抜き出してチェックしたい
  • エラーがどこにあるか探すのが面倒

こうしたとき、すべてのデータを1行ずつ見ていくのは非効率です。

VBAを使えば、エラーのあるデータだけを自動でリストアップするマクロを簡単に作ることができます。

チェック条件を満たす行だけ抽出するマクロ

次のマクロは、入力済みのシートから「エラー行」だけを新しいシートにまとめて転記するものです。

今回は「必須項目の未入力」と「数値の形式ミス」をチェックします。

Sub ListErrorsOnly()

    Dim srcSh As Worksheet
    Dim errSh As Worksheet
    Dim i As Long, r As Long
    Dim lastRow As Long
    Dim hasError As Boolean

    Set srcSh = Sheets("入力データ")
    Set errSh = Worksheets.Add(after:=Sheets(Sheets.Count))
    errSh.Name = "エラーチェック"

    errSh.Cells(1, 1).Value = "No"
    errSh.Cells(1, 2).Value = "名前"
    errSh.Cells(1, 3).Value = "金額"

    lastRow = srcSh.Cells(Rows.Count, 1).End(xlUp).Row
    r = 2

    For i = 2 To lastRow
        hasError = False

        ' 名前の未入力チェック
        If Trim(srcSh.Cells(i, 2).Value) = "" Then hasError = True

        ' 金額が数値でない場合
        If Not IsNumeric(srcSh.Cells(i, 3).Value) Then hasError = True

        If hasError = True Then
            errSh.Cells(r, 1).Value = srcSh.Cells(i, 1).Value
            errSh.Cells(r, 2).Value = srcSh.Cells(i, 2).Value
            errSh.Cells(r, 3).Value = srcSh.Cells(i, 3).Value
            r = r + 1
        End If
    Next i

    errSh.Columns("A:C").AutoFit
    MsgBox "エラーデータの抽出が完了しました", vbInformation

End Sub

このマクロの動作としては、次のようなルールに基づいています。

  • 元データは「入力データ」というシートにあると想定
  • A列:No、B列:名前、C列:金額
  • 名前が空欄、または金額が数値でなければエラーと判断
  • 該当する行のみ新しいシート「エラーチェック」に転記

実装するメリット

このようなチェックマクロを導入することで、次のような効果が期待できます。

  • 誤入力や未入力の検出を自動化できる
  • チェック済みデータだけを見て、修正がしやすくなる
  • ヒューマンエラーを減らせる
  • 新しいシートに分離することで、元データが守られる

特に、複数名でデータ入力をしている場合や、日々の確認作業が発生するようなケースでは、自動での抽出処理は非常に効率的です。

まとめ

エラーのある行だけを別シートに自動でまとめてくれるVBAマクロは、手作業の確認を大幅に減らしてくれます。

  • 必須項目の未入力や数値チェックを組み合わせて柔軟に判定
  • チェック結果は別シートに転記されるため、修正がしやすい
  • 業務のミスを減らし、確認作業の負担を軽減できる

こうした「エラーデータの抽出マクロ」を1つ用意しておくだけで、品質管理やデータの整備作業が格段にスムーズになります。

日々の確認業務に、ぜひ取り入れてみてください。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール