ISBLANK関数の使い方|「本当の空欄」と「空に見えるセル」を見分ける

ISBLANK関数の使い方|「本当の空欄」と「空に見えるセル」を見分ける

執筆者:

カテゴリ:

ISBLANKは、セルが本当に空欄かどうかを判定する関数です。

=A1="" でも空欄判定はできますが、両者は別の意味を持ちます。この違いを知らないと、件数が合わない・条件が効かないといった問題の原因が分かりません。

書式

=ISBLANK(セル)

TRUEFALSE を返します。

="" との違い

これがこの関数の核心です。

セルの状態 ISBLANK(A1) A1 = ""
何も入力していない TRUE TRUE
数式が "" を返している FALSE TRUE
スペースが1つ入っている FALSE FALSE
0 が入っている FALSE TRUE(※)

A1 = ""0 に対しても TRUE を返す環境があります。0と空欄を区別したいなら ISBLANKCOUNT を使ってください。

数式が返した空文字

=IF(A2="", "", A2*1.1)

この数式が入ったセルは、見た目は空欄ですが、値としては空文字("")が入っています。

  • ISBLANKFALSE(何か入っている)
  • = ""TRUE(空文字と一致する)
  • COUNTA1件として数える
  • COUNTBLANK → 空欄として数える

COUNTAとCOUNTBLANKで扱いが逆なので、両方を足しても全体の件数にならないことがあります。合計が合わないときは、ここを疑ってください。

使い分けの判断

やりたいこと 使うもの
見た目が空欄なら処理をスキップ A1 = ""
本当に未入力の行を検出したい ISBLANK
入力漏れを厳密にチェックする ISBLANK
数式の結果も含めて空扱いにしたい A1 = ""

実務では = "" のほうが使用頻度が高くなります。 「見た目が空欄なら何もしない」という要件が多いためです。

ISBLANKが必要なのは、「入力されたかどうか」そのものを問題にする場面です。

実用例

入力漏れを検出する

=IF(ISBLANK(C2), "未入力", "")

C列に数式が入っている場合、C2 = "" だと「数式で空になった行」まで未入力と判定してしまいます。ISBLANKなら区別できます。

未入力の件数を数える

=SUMPRODUCT(--ISBLANK(C2:C100))

--TRUE/FALSE を1/0に変換する書き方です。

COUNTBLANK でも数えられますが、数式が返した "" も空欄として数えてしまいます。 厳密に未入力だけを数えるならこちらです。

必須項目がすべて埋まっているか

=IF(OR(ISBLANK(A2), ISBLANK(B2), ISBLANK(C2)), "未完了", "完了")

項目が多いなら COUNTA のほうが短く書けます。

=IF(COUNTA(A2:F2) = 6, "完了", "未完了")

ただし COUNTA は数式の "" を数えるので、数式が入る列では正確でなくなります。

条件付き書式で未入力を目立たせる

=ISBLANK($C2)

列だけを $ で固定してください。

配列で使えない点に注意

ISBLANKは ARRAYFORMULA の中で正しく動きません。 範囲を渡しても、最初のセルだけを判定する挙動になります。

全行で判定したいなら、次のように書き換えてください。

=ARRAYFORMULA(IF(A2:A="", "未入力", ""))

または LEN を使います。

=ARRAYFORMULA(IF(LEN(A2:A)=0, "未入力", ""))

LEN(A2)=0 は文字数が0という判定で、数式が返した "" も0になります。挙動としては = "" に近いものです。

他のIS系関数

関数 判定するもの
ISBLANK 空欄か
ISNUMBER 数値か
ISTEXT 文字列か
ISERROR エラーか(すべての種類)
ISNA #N/A
ISLOGICAL TRUE/FALSE

ISNUMBER は実務で頻出します。

数値が文字列になっていないか確認する

=IF(ISNUMBER(A2), "数値", "文字列")

SUM の合計が合わないときの原因切り分けに使えます。COUNT で範囲全体を確認する方法もあります。

部分一致の判定

=IF(ISNUMBER(SEARCH("営業", A2)), "該当", "")

SEARCH は見つかった位置を返し、見つからなければエラーになります。それを ISNUMBERTRUE/FALSE に変換しています。FILTER の条件でもよく使う形です。

エラーかどうかの判定

=IF(ISERROR(A2), "エラーあり", "")

エラーを別の値に置き換えたいだけなら IFERROR のほうが簡単です。ISERROR は「エラーの件数を数える」など、エラーの存在自体を扱いたいときに使います。

=SUMPRODUCT(--ISERROR(C2:C100))

Excelとの違い

ISBLANK および IS系関数はすべて共通です。書式も挙動も同じで、数式が返した "" に対して FALSE を返す点も同じです。

ARRAYFORMULA はスプレッドシート固有ですが、Excel 365のスピルでも同様に ISBLANK は配列に対して期待通りに動かないことがあります。


空白の定義が三つあるという事実

空欄を判定する処理でつまずくのは、「空欄」に見えるものが三種類あるためです。この三つを区別できれば、判定で迷うことはなくなります。

第一は、本当に何も入っていないセルです。一度も入力されていないか、内容を削除したセルがこれにあたります。空白を判定する関数は、これだけを真とします。

第二は、数式が空文字を返しているセルです。見た目は空欄ですが、セルには数式が入っており、その結果として長さ零の文字列が入っています。空白を判定する関数では偽になります。しかし、長さを数える関数では零になり、空白以外を数える関数では一件として数えられます。

第三は、空白文字だけが入っているセルです。半角や全角のスペースが入っている状態です。見た目は空欄ですが、中身は文字です。どの判定でも空白とは見なされません。取り込んだデータに紛れ込みやすく、もっとも厄介な種類です。

判定が思ったとおりに動かないときは、この三つのどれなのかを先に特定してください。セルを選んで数式バーを見れば、数式が入っているかは分かります。文字数を数えれば、空白文字が入っているかも分かります。


用途に応じた判定方法の選択

三種類の空白があるため、判定の方法も用途によって使い分けます。

本当に何も入っていないことを確認したいなら、空白を判定する専用の関数を使います。数式が入っているセルを除外したい場合に適しています。

見た目が空欄であればよいなら、値を空文字と比較する方法が使えます。この方法なら、数式が返した空文字も真になります。実務では、こちらのほうが直感に合うことが多くあります。

空白文字だけのセルも空欄として扱いたいなら、前後の空白を落とす関数を通してから比較します。この方法がもっとも広く空欄を拾います。

三つの中で迷ったら、二つ目の方法を既定にしてください。多くの場面で意図に合い、書き方も短く済みます。厳密に区別する必要が出たときだけ、他の方法に切り替えます。


未入力を許さない設計

そもそも、未入力のセルを作らない設計にするという考え方もあります。

入力必須の欄については、入力規則で空欄を拒否する設定ができます。ただし、貼り付けの操作では働かないことがあるので、完全には防げません。

もうひとつは、条件付き書式で未入力のセルに色を付ける方法です。入力漏れが視覚的に分かるので、確認の手間が減ります。提出前の点検に有効です。

集計する側での対処としては、未入力の件数を表示するセルを用意する方法があります。件数が零でなければ入力漏れがあると分かります。取り込みのたびに確認できます。

そして、未入力を零として扱うか、集計から除外するかを明確にしてください。売上の平均を出す場合、未入力を零とすれば平均は下がり、除外すれば変わりません。どちらが正しいかは業務の定義によります。集計表の見出しに明記しておくと、読み手が誤解しません。


空文字を返さないという方針

数式で条件に合わないときに空文字を返す書き方は広く使われていますが、後工程で混乱を生みます。件数が合わない、平均がずれる、並べ替えで空欄が先頭に来る。いずれも空文字が原因です。

対処の方針は二つあります。

ひとつは、空文字を返さない設計にすることです。条件に合わない場合は零を返し、表示形式で零を非表示にします。見た目は空欄になりますが、データとしては数値なので、集計も並べ替えも素直に動きます。

もうひとつは、空文字を返すことを前提に、後工程の関数を選ぶことです。件数は数値だけを数える関数で数える、平均は空文字を無視する関数を使う。この方針でも回りますが、後工程を触るたびに気をつける必要があります。

どちらを選ぶかは、そのファイルを誰が触るかで決めてください。自分だけなら後者でも回りますが、他人が触るなら前者のほうが事故が少なくなります。


入力チェックの表を作る

未入力を管理する仕組みは、一度作れば以降ずっと機能します。構成を決めておくと迷いません。

表の上部に、確認用の行を三行設けます。一行目に各列の入力済み件数、二行目に未入力件数、三行目に入力率です。列ごとに横並びで表示すれば、どの列が埋まっていないかが一目で分かります。

必須項目には印を付けておきます。見出しの色を変えるか、記号を付けるだけで十分です。任意項目の未入力に惑わされなくなります。

行ごとの確認も入れます。必須項目がすべて埋まっているかを判定する列を右端に作り、未完了の行を目立たせます。条件付き書式で行全体に色を付ければ、埋めるべき行が視覚的に分かります。

提出前の確認としては、未入力の総数がゼロかどうかを判定する数式を一つ置いておきます。ゼロでなければ提出できない、という運用にできます。

この仕組みは、複数人で入力する表でとくに効きます。誰かに催促する前に、本当に未入力なのかを自分で確認できます。催促が減れば、関係も良くなります。


空欄をどう扱うかを文書化する

空欄の扱いは、集計結果を左右します。しかし、決めた内容は忘れられます。文書として残してください。

残す場所は、シートの上部か、専用の説明シートです。次の項目を書きます。

未入力を集計にどう含めるか。除外するのか、零として扱うのか。平均を出す場合は、この違いで数字が変わります。

空欄と零を区別するか。売上が零だった日と、まだ入力していない日を区別する必要があるなら、持ち方を変える必要があります。

数式が返す空文字をどう扱うか。件数に含めるのか、含めないのか。

必須項目と任意項目の区別。どの列が未入力でよいのか。

これらを書いておけば、集計結果について質問されたときに答えられます。他人が引き継いだときにも、同じ基準で運用できます。

書くのは五分で終わります。書かないと、半年後に自分で説明できなくなります。集計表を作るときの標準作業として、組み込んでください。

よくある質問

Q. 空欄なのに判定が偽になります

数式が空文字を返しているか、空白文字が入っています。数式バーと文字数で確認してください。

Q. 空白文字を含めて判定したいのですが

前後の空白を落とす関数を通してから、空文字と比較してください。

Q. 数式が入っているかどうかを判定できますか

数式かどうかを判定する関数があります。空白の判定と組み合わせると、状態を細かく分けられます。

Q. 未入力の件数を数えたいのですが

空白を数える関数を使います。ただし、空文字を返す数式は数えられません。

Q. 空欄の行を除外して集計したいのですが

条件付きの集計関数で、空欄以外という条件を指定してください。

Q. 入力を必須にできますか

入力規則で空欄を拒否できます。ただし貼り付けでは働かないことがあります。

Q. 未入力に色を付けたいのですが

条件付き書式で空欄を条件にしてください。入力漏れが視覚的に分かります。

Q. 空欄と零をどう扱うべきですか

業務の定義によります。集計表の見出しに、どちらの扱いかを明記してください。


まとめ

  • ISBLANK は「本当に何も入っていないか」を判定する
  • 数式が返した "" に対しては FALSE を返す。ここが = "" との決定的な違い
  • COUNTACOUNTBLANK の食い違いも、この空文字が原因
  • 実務では = "" のほうが出番が多い。ISBLANKは入力漏れの厳密なチェックに使う
  • ARRAYFORMULA の中では動かないLEN(A2:A)=0 で代用する
  • ISNUMBER は文字列化の検出と部分一致判定に頻出

関連する関数