概要
「値が入っていないときだけ別の文字を出したい」
「空白をそのまま計算に使うとエラーになるのを避けたい」
「外部システムに渡すとき、NULL(空)を ‘N/A’ などに置き換えたい」
こういう “値がない(NULL/空白)ときの対策” をするときの基本が IF 関数です。
Excel に「本当の意味でのデータベース的な NULL」はありませんが、
実務では主に次の2つを「NULLっぽい状態」として扱います。
- 何も入力されていない空セル
- 見た目は空だが「””(空文字)」が入っているセル
ここでは、それらを IF でどう扱い分けるか を、テンプレと例題でかみ砕いて説明します。
Excelにおける「NULL(空)」の考え方
空セルと空文字(””)の違い
Excel ではよく「NULL」と言いつつ、実際には次の2種類があります。
- 本当に何も入っていないセル(ユーザーが何も入力していない)
- 数式の結果として
""を返しているセル(見た目は空だが、実際は“空文字”が入っている)
多くの場面では「どちらも“空っぽ”として扱いたい」ので、
IF で
=IF(A2="","空です","値があります")=IF(A2="","","なにかある")
のようにチェックします。
基本:空なら代替文字を出す
空白セルを「N/A」に置き換える
A2 に値が入っているかどうかで表示を変えたい例です。
A2 が空 or 空文字 → 「N/A」
A2 に値がある → A2 の値そのまま
B2 に書く式はこうなります。
=IF(A2="","N/A",A2)
ポイントは、条件を A2="" としていることです。
- A2 が空セル → TRUE(”” と等しい)
- A2 が “” を返す数式 → TRUE
- それ以外(何か入っている) → FALSE
「空っぽっぽい」状態をまとめて拾えます。
数値計算のNULL対策:空なら0扱い・それ以外はそのまま
空は 0 にして計算エラーを避ける
A2 に数値が入る想定だけど、空のときもある。
空のときは 0 として扱いたい例です。
=IF(A2="",0,A2)
これにより、
- A2 が空 → 0
- A2 に 10 → 10
となるので、合計や平均の計算で "" が混ざってエラーになるのを防げます。
合計列で直接使うなら、たとえば
=IF(A2="",0,A2) + IF(B2="",0,B2)
のように組み合わせてもOKです。
文字列生成のNULL対策:空ならその項目だけ飛ばす
空をそのままつなぐと“変な文”になる問題
たとえば、氏名(A2)と部署名(B2)から
「山田(営業部所属)」
のような文字列を作りたいとします。
B2 が空なのに
=A2 & "(" & B2 & "所属)"
と書くと、
「山田(所属)」
のように、途中が抜けて変な表示になります。
IFで「空なら何も入れない」にする
そこで B2 が空かどうかを IF で判定し、
空ならその部分を出さないようにします。
=A2 & IF(B2="","(部署不明)","(" & B2 & "所属)")
- B2 が空 → 「山田(部署不明)」
- B2 に「営業部」 → 「山田(営業部所属)」
のように、“NULL(空)用のメッセージ” を用意しておくパターンです。
外部システム連携用に「NULLの代わり」を出す
API・CSV・システム連携でよくある指定
「値がないときは NULL という文字を出してほしい」
「空欄じゃなくて ‘null’ や ‘-‘ などを出したい」
こういうときも、基本はまったく同じです。
A2 が空かどうかを見て、
空なら “null”、そうでなければ A2 を返します。
=IF(A2="","null",A2)
あるいは、ダブルクォーテーション付き JSON 風にするなら、
=IF(A2="","null","""" & A2 & """")
- A2 が空 → null(文字列ではなく、JSON的な null を表現したいとき)
- A2 に “Tokyo” → “Tokyo”
(セル上の見た目は"Tokyo"という文字列になります)
「空のときに何を出したいか」を IF の第2引数に書くだけ、というシンプルな構造です。
IFと他関数の組み合わせで“NULL対策込み処理”にする
TEXT+IF:空なら空、値があるときだけフォーマット
日付をフォーマットして表示するとき、
セルが空なのに TEXT をかけると "1900/01/00" のような変な表示になることがあります。
そこで 「空なら何もしない」「値があるときだけTEXT」 という形にします。
A2 に日付、B2 にフォーマット済み文字列を作る例です。
=IF(A2="","",TEXT(A2,"yyyy/mm/dd"))
- A2 が空 → B2 も “”(見た目も空)
- A2 に日付 → TEXT で「yyyy/mm/dd」形に整形
この「空なら空、そうでなければ〇〇」は非常によく使うNULL対策パターンです。
NULL文字対策の“型”まとめ
空なら代替文字、値があればそのまま
=IF(A2="","代わりの文字列",A2)
空なら 0、値があればそのまま(計算用)
=IF(A2="",0,A2)
空なら何も表示しない、値があれば加工して表示
=IF(A2="","",TEXT(A2,"yyyy/mm/dd"))
空なら「null」、値があればそのまま
=IF(A2="","null",A2)
このあたりの「型」をそのまま指に覚えさせてしまうと、
NULL(空)を意識した安全な数式設計ができるようになります。
問題1
A2 が空(値なし)の場合は「N/A」、
値が入っている場合は A2 の値をそのまま表示したいです。
B2 に書く IF 関数の式を書いてください。
=IF(A2="","N/A",A2)
問題2
A2 に数値が入る想定ですが、空のこともあります。
空の場合は 0、値が入っている場合はそのまま A2 の値を返したいです。
IF を使った式を書いてください。
=IF(A2="",0,A2)
問題3
A2 に氏名、B2 に部署名が入ります。
B2 が空の場合は「(部署不明)」、
B2 に値がある場合は「(部署名所属)」という形で表示したいです。
「山田」「営業部」なら「山田(営業部所属)」
「山田」「(空)」なら「山田(部署不明)」
となるように、C2 に書く式を書いてください。
=A2 & IF(B2="","(部署不明)","(" & B2 & "所属)")
問題4
A2 に日付が入ることがありますが、空のこともあります。
空のときは空のまま、日付が入っているときだけ「yyyy/mm/dd」形式で表示したいです。
B2 に書く、IF と TEXT を組み合わせた式を書いてください。
=IF(A2="","",TEXT(A2,"yyyy/mm/dd"))
問題5
A2 に文字列が入ることがありますが、空のときは「null」という文字を出したいです。
A2 が空なら “null”、空でないなら A2 の値をそのまま返す式を、B2 に書いてください。
=IF(A2="","null",A2)
IF での「NULL文字対策」は、
- 空ならどうするか
- 値があるならどうするか
この2パターンをはっきり決めてあげるだけです。
一見地味ですが、ここをきちんと設計しておくと、
のちのち「変な表示」「エラー」「外部システムへの渡しミス」をかなり防げるようになります。
