accessデータベース操作 PR

AccessでNull値を一括置換する方法【SQL・VBA付き|初心者〜実務向け】

記事内に商品プロモーションを含む場合があります

導入文

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でよく出る「型が一致しません」エラーの正体
  • まとめ

    Accessでは、SQLを使うことでNull値を安全に一括置換することが可能です。

    本記事のポイント:

    • IS NULL で対象抽出
    • UPDATE文で一括置換
    • Nz関数は表示用
    • VBAからも実行可能
    • バックアップ必須

    Null値対策をマスターすれば、集計・検索・Excel連携時のトラブルを大幅に減らすことができます。

    ぜひ実務で活用してください。