データ入力のチェックは、多くの現場で発生する定型作業のひとつです。
たとえば、次のような課題はありませんか?
- 数が合わない明細だけ確認したい
- 未入力の行だけ抜き出してチェックしたい
- エラーがどこにあるか探すのが面倒
こうしたとき、すべてのデータを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つ用意しておくだけで、品質管理やデータの整備作業が格段にスムーズになります。
日々の確認業務に、ぜひ取り入れてみてください。


