Accessで0を非表示にする方法 書式設定とNullの違い

概要

この記事の結論
Accessで0だけを空白表示にするなら、フォームやレポートの数値テキストボックスの書式を変更します。元データは0のまま残るため、入力値や集計の意味を変えずに帳票を整えられます。一方、IIfで0をNullにした計算列は、平均や値の件数などに影響します。表示だけの変更、抽出条件による行の除外、保存値の変更を区別して選びましょう。
0の非表示とは、数値のゼロを保持したまま、画面や帳票では空白に見せる表示上の設定です。

この記事でわかること

  • 表示だけ変えるか計算結果を変えるかを決める
  • 書式設定で整数と小数の0を隠す
  • フォームとレポートの設定場所を確認する
  • IIfで表示用の計算列を作る
  • 0とNullが集計に与える影響を確かめる

この記事の主な内容

  1. 表示だけ変えるか計算結果を変えるかを決める
  2. 書式設定で整数と小数の0を隠す
  3. フォームとレポートの設定場所を確認する
  4. IIfで表示用の計算列を作る
  5. 0とNullが集計に与える影響を確かめる
  6. 反映されない原因と出力結果を確認する
  7. よくある質問

想定読了時間:約12分~15分


表示だけ変えるか計算結果を変えるかを決める

帳票の0を目立たせたくないだけなら、まず[書式]で見た目を変えます。保存値を変更する必要はありません。0は「値がゼロと分かっている」、Nullは「値が入っていない」という状態なので、見た目をそろえるために同じ意味として扱わないことが重要です。[1][2]

例えば数量0の受注明細を空白に見せたい場合でも、元の数量を消すと業務上の意味が変わることがあります。反対に、0の行自体を一覧から除きたいなら、文字を隠すのではなく抽出条件を使います。目的を一文で決めてから設定しましょう。

目的使う方法変わるもの
値は0のまま空白表示テキストボックスの書式その部品の見た目
表示用の列だけ0をNullにする選択クエリの計算列その列の計算結果
0のレコードを出さない抽出条件表示・集計の対象行
元データを訂正する入力修正や更新処理保存値そのもの

0 空文字 Nullを区別する

空文字は長さ0の文字列で、式では半角の二重引用符2つで表します。数値の0とは異なり、主にテキストの処理で使います。一方、Nullは値が未設定の状態です。数値の欄へ空文字を返す式を混ぜると、後続の数値書式や比較が分かりにくくなります。

この記事では、元テーブルにある数値を保持したまま、必要な表示場所へ書式を設定する方法を基本にします。Nullへ置き換えた計算列も紹介しますが、用途と集計への影響を確認してから使ってください。

表示書式と計算列と抽出条件で変わる対象を比較した図

書式設定で整数と小数の0を隠す

Accessの数値書式は、セミコロンで「正の数」「負の数」「ゼロ」「Null」の4区分に分けられます。ゼロの区分へ空の文字列を指定すると、0だけを空白に見せる設定を明示できます。負数の符号も指定しておくと、差額や返品がある帳票でも読み違えにくくなります。[1]

コピーして使える書式例

下記は、日本で一般的な小数点と桁区切りを想定した例です。[書式]プロパティへ入力するものであり、先頭のイコールは不要です。二重引用符、マイナス、セミコロンは半角で入力してください。

用途書式の例表示の考え方
整数の0だけを空白にする#,##0;-#,##0;””正負の整数は表示、0は空白
小数第1位まで表示し0を隠す#,##0.0;-#,##0.0;””12は12.0、-12は-12.0
0は空白 Nullは未入力と表示#,##0;-#,##0;””;”未入力”ゼロと未入力を区別

「0」はその桁のゼロも表示する記号、「#」は不要な桁のゼロを表示しない記号です。単純な整数なら「#,###」も候補になります。ただし、後から小数やNull表示を加える場合は、区分ごとに用途を明示する書き方の方が設定意図を残しやすくなります。

Accessの数値書式が正数と負数とゼロとNullの順に分かれる図

小数点以下表示桁数も確認する

独自の数値書式を使う場合は、まず[小数点以下表示桁数]を[自動]にして、書式で指定した桁数を確認します。小数を表示するには元フィールドも小数を保持できる型である必要があります。整数型に失われた小数を、表示設定だけで復元することはできません。

また、0.04を小数第1位まで表示すると、画面では0.0に見えることがあります。この値は「正確に0」ではないため、ゼロ用区分で隠す対象とは別です。「丸めた結果が0なら隠す」という要件なら、丸めの単位と集計への影響を先に決める必要があります。


フォームとレポートの設定場所を確認する

変更するのは、数値を表示しているテキストボックスの[書式]です。フォーム全体の[レコードソース]や、見出しのラベルを選んでいても設定できません。プロパティシート上部の選択対象がテキストボックスになっていることを確認します。

レポートで設定する手順

1. 対象レポートをコピーし、別名で保存します。
2. デザインビューで開き、金額や数量のテキストボックスを選びます。
3. F4でプロパティシートを開き、[書式]タブの[書式]へ例の文字列を入力します。
4. 必要に応じて[小数点以下表示桁数]を[自動]にします。
5. 印刷プレビューを開き、正数、負数、0、Nullが意図どおりか確かめます。

同じ手順はフォームにも使えます。ただしフォームは入力中と閲覧中で表示が変わることがあります。入力フォーカスがある状態だけで判断せず、別の欄へ移動した状態と、フォームを開き直した状態でも確認しましょう。[1][2]

数値を表示するテキストボックスの書式を変更する図

テーブルの書式を変える場合は影響範囲に注意する

テーブルのフィールドに書式を設定する方法もあります。後から作るフォームやレポートに引き継がれる場合がありますが、既存のコントロールに独自の設定があると、見た目が一律には変わりません。特定の請求書だけ直したいなら、そのレポート側で設定する方が範囲を限定できます。[1]

例えば画面入力では0を明示し、印刷用レポートだけ空白にする運用も可能です。入力担当者が「未入力なのかゼロなのか」を見分ける必要がある画面まで、一斉に非表示へ変更することは避けましょう。

ゼロを空白に表示しても保存データはゼロのままであることを説明した図

IIfで表示用の計算列を作る

表示用の列そのものをNullにしたい場合は、選択クエリへ計算列を追加します。IIfは、条件が成立したときと成立しないときで返す値を分ける関数です。ここでは元の[金額]を残し、別名の列を作ることがポイントです。

クエリのフィールド行へ入力する式

表示用金額: IIf([金額]=0,Null,[金額])

クエリをデザインビューで開き、元の金額フィールドも表示したうえで、空いている列の[フィールド]へ式を入力します。左側の「表示用金額」は新しい列名、コロンの右側が計算式です。データシートで、元の金額が0の行だけ表示用金額が空になっているか確認します。

これは選択クエリの結果を作る処理であり、元テーブルの0を更新する操作ではありません。ただし、計算結果の列は入力用の保存欄として扱わないでください。編集するフォームには元の数値フィールドを使い、計算列は表示専用に分けると意図が明確になります。

フォームとレポートへ反映する場所

レポート全体の[レコードソース]には、表示用金額を含むクエリを指定します。次に対象テキストボックスの[コントロールソース]を表示用金額へ変更します。画面全体と部品のプロパティを逆にしないように注意してください。

単独の計算テキストボックスなら、コントロールソースへ「=IIf([金額]=0,Null,[金額])」を設定する方法もあります。この場合、部品の名前は「txt表示用金額」など元フィールドと区別します。同じ名前を使うと参照先が分かりにくくなるためです。

元の数値列を残しながら表示用の計算列を分ける図

帳票の数値表示と集計の改善を検討している方へ

まずは記事の手順をコピー上で試し、設定と結果を確認してください。複数の画面や利用者に影響する、保存や集計の仕組みから見直したい場合は、対象ファイルの形式・症状・期待する動作を整理してご相談ください。


0とNullが集計に与える影響を確かめる

書式だけなら保存値は変わりません。一方、計算列で0をNullへ置き換えると、その列を平均や値の件数に使った場合の結果が変わります。合計が同じでも、集計全体が同じとは限らない点に注意してください。

4件の架空データで比べる

元の値を「10、0、Null、20」とします。書式で0を隠しても、値が入っているのは3件です。表示用列で0をNullにすると、値が入っているのは2件になります。以下はこの4件を対象とした比較です。[4][5]

集計元の金額0をNullにした表示用金額
Sumで合計3030
Avgで平均1015
Count(金額などの列)32
Count(*)で行数44

元の平均は(10+0+20)÷3で10です。Nullを返す列では(10+20)÷2で15になります。0が「実績なし」を意味するなら、平均に含めるかどうかは業務上の判断です。見た目を整える目的だけで分母を変えないようにしましょう。

計算用と表示用の列を使い分ける

帳票の金額表示には表示用金額を使っても、検算や平均には元の金額を使うという分離が可能です。列名を「金額」と「表示用金額」のように分け、集計式がどちらを参照しているか確認します。数か月後に別の担当者が触る場合にも、用途が読み取りやすくなります。

全件がNullの場合、合計もNullになるなど、通常の数値がある場合とは異なる結果になり得ます。Nzで0を返す設計を採る場合も、「データがない状態」と「合計が0の状態」を同じ表示にしてよいかを確認してから設定してください。

ゼロと未入力を混同せず平均の対象件数を決める考え方

反映されない原因と出力結果を確認する

書式が効かない場合は、対象の型、選択した部品、式、実際の値を順に確認します。特にFormat関数で作成した結果は文字列です。数値の表示書式を後から重ねるより、数値を保持した列に書式を適用する方が、計算や並べ替えを整理しやすくなります。[3]

確認したい症状主な確認点対応例
0が残る別の部品を設定していないか対象名とコントロールソースを確認
式が文字として見える式の入力場所書式と計算式を分ける
小数が表示されない元データ型と書式小数を保持しているか確認
負数が読めない負数の区分符号と桁数を明示
0.0だけが残る元値が微小な正負の数丸め前の実値を確認
出力ファイルでは0になる出力方式とデータ元出力先の値と書式を確認

正常値だけでなく境界値を並べて試す

確認用には、1,250、-1,250、0、Null、0.04のように性質の異なる値を用意します。小数第1位の表示を使うなら、小数を含む値も追加します。プラスの値と0だけで検査すると、返品や調整が入ったときに負数の表示不備が残る可能性があります。

入力フォームでは編集中と欄を離れた後、レポートでは印刷プレビューを確認します。PDFを配布するなら、生成したPDF自体も開いて確認してください。Access内で見えた結果だけで、配布ファイルの完成を判断しないことが大切です。

CSVは見た目を保存する形式ではない

CSVはセルの表示書式を保持する形式ではありません。Accessの画面で0を隠していても、出力方法によっては0というデータが書き出されます。Excelも、出力するオブジェクトや書式付き出力の有無で扱いが変わるため、取り込み先で確認します。

外部へ空欄を渡す必要がある場合は、交換仕様として「0を空欄にする理由」「再取り込み時の型」「Nullを区別する方法」を決めます。社内帳票の見た目の改善と、外部システムへ送るデータ変換を同じ設定だけで済ませないようにしましょう。

ゼロの表示をフォームと帳票と出力ファイルで確認する図

まとめ

0を非表示にするだけなら、数値テキストボックスの書式から始めます。保存値、表示用計算列、抽出条件を区別し、負数やNullも含めて確認しましょう。平均や件数、CSVの扱いまで整理しておくと、帳票の見やすさを改善しながら数値の意味も保てます。

帳票の数値表示と集計の改善を検討している方へ

まずは記事の手順をコピー上で試し、設定と結果を確認してください。複数の画面や利用者に影響する、保存や集計の仕組みから見直したい場合は、対象ファイルの形式・症状・期待する動作を整理してご相談ください。


よくある質問

[書式]プロパティで表示だけを変えた場合、保存値は0のままなので、通常はその値を使う計算の意味も変わりません。ただし、IIfで0をNullへ置き換えた列を集計すると、平均やCountによる値の件数は変わります。例えば10、0、20の平均は10ですが、0をNullとして除けば15です。見た目の変更なのか、計算結果の変更なのかを分けてください。合計だけが同じでも、平均や分母まで同じとは限りません。

0は数値として値が確定している状態、Nullは値が入っていない状態、空文字は長さ0の文字列です。画面では同じ空白に見せられても、計算や検索での扱いは異なります。数値欄で空文字を返す式を混ぜると、後から数値書式や並べ替えを設定しにくくなります。未入力を判定する場合はIs Nullなどを使い、0と混同しないようにします。帳票では空白表示でも、入力画面では未入力を判別できる表示を残すと安心です。

はい。正数と負数を別区分で指定し、3番目のゼロ用区分を空の文字列にします。例えば小数第1位を表示するなら「#,##0.0;-#,##0.0;””」が設定例です。元のフィールドも小数を保持できる型にしてください。また、0.04が丸められて0.0に見えても、元の値は正確な0ではありません。表示上の丸めとゼロ判定は別です。正数、負数、0、Null、小さい小数を用意して、用途に合う表示かを確認しましょう。

必ずしも異常ではありません。フォームでは値を編集するため、入力中は保存値が見え、入力欄を離れると書式に従った表示へ戻る場合があります。まず別の欄へ移動した状態、フォームを開き直した状態、印刷用レポートの表示を分けて確かめてください。入力中も含めて常に空欄にしたいという理由で、元の0を消す処理を追加するのは避けます。編集用の欄と表示専用の欄を分ける必要があるか、画面の目的から判断します。

選択クエリで「表示用金額: IIf([金額]=0,Null,[金額])」のような計算列を追加しただけなら、元テーブルの金額は更新されません。クエリの結果として別の値を返しているためです。ただし、その列を平均や件数に使えば集計結果は変わり、入力用の連結欄とも同じ扱いにはできません。元の金額列を残し、表示用と計算用の参照先を確認します。更新クエリで元の値をNullへ変更する操作とは、明確に区別してください。

画面の表示書式と、ファイルへ出力される値は別だからです。CSVにはExcelのようなセル書式を保存できないため、画面で空白に見える0がそのまま書き出されることがあります。Excelへの出力も、対象オブジェクトや出力オプションによって結果が変わります。外部へ空欄を渡す必要がある場合は、専用の出力クエリなどで仕様を明確にしてください。出力後にファイルを開き、ゼロと未入力が取り込み先でどう扱われるかまで確かめます。


関連記事

Accessレポートを編集する方法

Accessクエリでグループ化して集計

Accessで文字列を結合する方法 Nullと区切り文字

Accessフォームにテキストボックスを配置する方法と連結の違い

参考情報

[1] Microsoft 数値と通貨の書式
https://support.microsoft.com/en-us/access/format-a-number-or-currency-field

[2] Microsoft Formatプロパティ
https://support.microsoft.com/en-us/access/format-property

[3] Microsoft Format関数
https://support.microsoft.com/en-us/access/functions/format-function

[4] Microsoft Avg関数
https://learn.microsoft.com/en-us/office/vba/access/Concepts/Criteria-Expressions/avg-function-microsoft-access-sql

[5] Microsoft Count関数
https://learn.microsoft.com/en-us/office/vba/access/concepts/criteria-expressions/count-function-microsoft-access-sql

TOP