導入文
Accessでデータを扱っていると、
- 計算結果がエラーになる
- 条件判定がうまく動かない
- Excel出力時に空白で崩れる
といったトラブルの原因としてよく出てくるのが Null値 です。
本記事では、Accessのテーブルやクエリ内にある Null値 を安全に一括置換する方法を、SQLとVBAの両方で分かりやすく解説します。
すべてコピペで動くコード例付きです。
Null値とは何か
Null値とは「値が入っていない状態」を意味します。
空文字(””)や 0(ゼロ)とは違い、
- 計算不可
- 比較不可
という特殊な値です。
そのため、
WHERE 金額 = 0
では Null は取得できません。
まずはNull値を確認する(SELECT)
置換前に、どのレコードがNullなのかを確認しましょう。
SQL①:Nullレコードを抽出
SELECT *
FROM T_売上
WHERE 金額 IS NULL;
※ T_売上 は実際のテーブル名に変更してください。
Nz関数でNullを表示用に置換する(クエリ)
削除や更新をせず、表示だけ置換する場合は Nz関数 を使います。
SQL②:表示上Nullを0にする
SELECT Nz(金額,0) AS 金額
FROM T_売上;
UPDATE文でNull値を一括置換する
実際にテーブルの値を書き換える場合は UPDATE 文を使います。
SQL③:Nullを0に置換
UPDATE T_売上
SET 金額 = 0
WHERE 金額 IS NULL;
文字列のNullを空文字に置換
文字列型フィールドの場合はこちら。
SQL④:Nullを空文字に置換
UPDATE T_顧客
SET 備考 = ""
WHERE 備考 IS NULL;
日付フィールドのNullを置換
日付型は # で囲みます。
SQL⑤:Nullを今日の日付に置換
UPDATE T_予定
SET 予定日 = Date()
WHERE 予定日 IS NULL;
VBAからNull一括置換を実行する
VBAからSQLを実行する場合はこちら。
VBA例
Dim sql As String
sql = "UPDATE T_売上 SET 金額 = 0 WHERE 金額 IS NULL"
CurrentDb.Execute sql, dbFailOnError
MsgBox "Null値を一括置換しました"
置換前に必ずバックアップを取る
安全のため、必ずバックアップ用テーブルを作成しましょう。
SELECT * INTO T_売上_backup FROM T_売上;
よくあるエラーと対処
エラー①:型が一致しません
原因:
- 数値フィールドに文字列を入れている
対策:
SET 金額 = 0
数値型には数値を設定します。
エラー②:更新可能なクエリではありません
原因:
- 集計クエリ
- JOINクエリ
対策:
元テーブルに直接UPDATEする。
関連記事(内部リンク)
- Accessで重複データを削除する方法
- Access VBAでクエリをVBAから実行する方法まとめ
- Accessでよく出る「型が一致しません」エラーの正体
- IS NULL で対象抽出
- UPDATE文で一括置換
- Nz関数は表示用
- VBAからも実行可能
- バックアップ必須
リンク
まとめ
Accessでは、SQLを使うことでNull値を安全に一括置換することが可能です。
本記事のポイント:
Null値対策をマスターすれば、集計・検索・Excel連携時のトラブルを大幅に減らすことができます。
ぜひ実務で活用してください。