accessデータベース操作 PR

AccessでNullを0や空白に変換する方法(Nz関数・VBA対応)

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

導入文

Accessでデータを扱う際、
Null値のままだと計算エラーや表示崩れの原因になります。

結論としては、
Nz関数を使うことで簡単に0や空白に変換できます。

この記事では、クエリ・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では、SQLを使うことでNull値を安全に一括置換することが可能です。

本記事のポイント:

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

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

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