毎回こんな確認、していませんか?
- 顧客データを入力したけど、未入力や間違いがないか心配…
- 郵便番号が7桁じゃなかったり、電話番号にハイフンが抜けていたり…
- 一つ一つ目で確認するのは大変!
こうした作業、VBAを使えば一括でチェック可能です。
具体例
VBAを活用して、すべてのチェックを自動化し、修正すべきポイントをわかるようにします。
- 顧客データの未入力チェック(必須項目が空欄)
- 郵便番号が7桁か?電話番号にハイフンが入っているか?
- 不備のあるデータだけを、別シートにリストアップする
シート構成の例
A列 | B列 | C列 | D列 |
---|---|---|---|
顧客名 | 郵便番号 | 住所 | 電話番号 |
株式会社A | 1234567 | 東京都千代田区 | 03-1234-5678 |
株式会社B | 123-456 | 大阪市中央区 | 0312345678 |
株式会社C | 名古屋市中区 | 052-876-5432 |
未入力チェック&形式チェックマクロ
Sub CheckCustomerData()
Dim wsSource As Worksheet
Dim wsError As Worksheet
Dim lastRow As Long
Dim i As Long
Dim errorRow As Long
Set wsSource = ThisWorkbook.Sheets("顧客データ")
Set wsError = ThisWorkbook.Sheets("エラーリスト")
With wsError
.Cells.ClearContents
.Range("A1").Value = "行番号"
.Range("B1").Value = "顧客名"
.Range("C1").Value = "郵便番号"
.Range("D1").Value = "住所"
.Range("E1").Value = "電話番号"
End With
errorRow = 2
lastRow = wsSource.Cells(wsSource.Rows.Count, 1).End(xlUp).Row
For i = 2 To lastRow
Dim hasError As Boolean
hasError = False
' 未入力チェック
If wsSource.Cells(i, 1).Value = "" Or wsSource.Cells(i, 2).Value = "" Or _
wsSource.Cells(i, 3).Value = "" Or wsSource.Cells(i, 4).Value = "" Then
hasError = True
End If
' 郵便番号チェック:7桁か?
If Len(wsSource.Cells(i, 2).Value) <> 7 Or Not IsNumeric(wsSource.Cells(i, 2).Value) Then
hasError = True
End If
' 電話番号チェック:ハイフン含むか?
If InStr(wsSource.Cells(i, 4).Value, "-") = 0 Then
hasError = True
End If
' エラーがあれば、別シートに転記
If hasError = true Then
wsError.Cells(errorRow, 1).Value = i
wsSource.Range(wsSource.Cells(i, 1), wsSource.Cells(i, 4)).Copy _
wsError.Cells(errorRow, 2)
errorRow = errorRow + 1
End If
Next i
MsgBox "チェックが完了しました!エラーリストを確認してください。"
End Sub
コードの説明
顧客データシートと、エラーリストシートの2つを利用していますが、エラーリストシートについては、マクロを動作させるたびにデータを一度、クリアしています。
その上で、改めてタイトルを入力し、顧客データシートでエラーがないかを確認の上、エラーリストに一覧が出るような仕様になっています。
- IsNumeric:指定した値が数字かどうかを判定する関数。郵便番号が「全て数字」かをチェックするために使います。
- InStr:文字列の中に特定の文字(ここでは「-」)が含まれているかを調べる関数。0を返す場合は含まれていないことを意味します。
wsSource
:元の顧客データシート(”顧客データ”)wsError
:エラーリストを書き出すシート- 1行ずつ見て、空欄や形式の間違いをチェック
- エラーがあれば、エラーリストシートに自動転記
よくある質問(Q&A)
Q1. 郵便番号にハイフンを含めたい場合は?
→ Len(郵便番号) <> 8
にするか、Like "###-####"
を使ってチェック可能です。
Q2. 電話番号の桁数もチェックできますか?
→ Len(電話番号)
を使えば桁数確認もできます。
Q3. エラー箇所を色付けしたい!
例えば、「.Interior.Color = RGB(255, 200, 200)」
を使えば、セルを赤くできます。
まとめ
今回の記事では、顧客データの入力ミスを自動でチェックし、不備がある行だけをリストアップするVBAマクロを紹介しました。
- 記入漏れの自動チェック
- 郵便番号・電話番号の形式確認
- エラーを別シートに自動転記
これで、面倒な目視チェックから解放され、作業時間も大幅短縮されます。
コメント