タグ: 空欄

  • 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 は配列に対して期待通りに動かないことがあります。

    まとめ

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

    関連する関数