Menu

ISBLANK関数とISNUMBER関数の使い方: ExcelのIS関数

=ISBLANK(B2)はB2が空のときTRUEを、=ISNUMBER(B2)はB2に数値が入っているときTRUEを返します。ISBLANK、ISNUMBER、ISTEXT、ISERROR、ISNA、ISEVEN、ISODD、""を返す数式が空白にならない理由、ISNUMBER(SEARCH())で文字列を含むか調べる方法を学びます。

このページのシートはすべて実際に動きます。数値や数式を変えると再計算されます。

=ISBLANK(B2)は、B2が空ならTRUE、そうでなければFALSEを返します。=ISNUMBER(B2)は、B2に数値が入っていればTRUEを返します。これらのIS関数はセルについて「はい」か「いいえ」で答える質問を1つ判定するもので、たいていはIFの中の条件として使います:=IF(ISBLANK(B2),"Missing","OK")。

セルに入っているものは?
C2
ABCDEF
1WhatValueISBLANKISNUMBERISTEXTISERROR
2Number120FALSETRUEFALSEFALSE
3TextAppleFALSEFALSETRUEFALSE
4Empty cellTRUEFALSEFALSEFALSE
5Number as text42FALSEFALSETRUEFALSE
6Date2026-03-15FALSETRUEFALSEFALSE
7LogicalTRUEFALSEFALSEFALSEFALSE
8Error#DIV/0!FALSEFALSEFALSETRUE
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

各行を横に読んでください。意外に感じる結果がいくつかあります:

  • 日付は数値です。Excelは日付を日数として保存しているので、2026-03-15に対するISNUMBERはTRUEです。
  • '42は数値に見えますが文字列なので、ISNUMBERはFALSE、ISTEXTはTRUEです。取り込んだデータはよくこの形で入ってきます。
  • TRUEは数値でも文字列でもないので、7行目は4列すべてFALSEです。これを判定するのはISLOGICALです。

B5に(アポストロフィなしで)42と入力すると、その行はISNUMBERがTRUEに変わります。

ISBLANKと=""の違い: ""を返す数式は空白ではない

ISBLANKがTRUEになるのは、何も入っていないセルだけです。""を返す数式のセル(=IF(C2="","",C2*D2)など)は空に見えますが、数式が入っているのでISBLANKはFALSEになります。""と比べれば、どちらも空として扱えます:

B2 is empty, B3 holds =""

=ISBLANK(B2)    TRUE
=ISBLANK(B3)    FALSE
=B2=""          TRUE
=B3=""          TRUE

下のシートでは、空のセル、""の数式、スペース、0を、""を空として扱う判定で比べています:

空に見えるが、本当に空か
C3
ABCD
1WhatValueEquals ""LEN
2Empty cellTRUE0
3Formula returning ""TRUE0
4A space FALSE1
5Zero0FALSE1
6Count blank2
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

数式のセルではB3=""がTRUE、LENが0になり、B6のCOUNTBLANKは空のセルと""の2つを数えます。4行目のスペースは、どの判定でも空ではありません(LENは1)。スペースだけのセルを空白として数えたいなら、=TRIM(B4)=""で判定します。0も空白ではありません。そのため、""を返す数式で埋まった列を判定するときは、ISBLANKではなく=""か<>""を使ってください。

セルに文字列が含まれるか調べる: ISNUMBER(SEARCH())

ExcelにはCONTAINS関数がありません。SEARCHはある文字列が始まる位置を返し、見つからなければ#VALUE!を返します。ISNUMBERがそれをTRUEかFALSEに変えます:

商品名に「laptop」が含まれるか
C2
ABCD
1ProductContains laptopCase-sensitive
2Pro Laptop 14YesNo
3MouseNoNo
4Laptop standYesNo
5USB cableNoNo
6laptop bagYesYes
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

SEARCHは大文字と小文字を区別しないので、C列では「Laptop」も「laptop」も一致します。FINDは大文字と小文字を区別するので、D列で一致するのは「laptop bag」だけです。A3をGaming laptopに変えると、両方の列がYesになります。2つの関数の詳細はFINDとSEARCHのページで説明しています。印を付けるのではなく一致するセルを数えるなら、=COUNTIF(A2:A6,"*laptop*")を使います。

ISERROR、ISERR、ISNA

エラーを判定する関数は3つあり、#N/Aの扱いが違います:

それぞれが受け止めるエラーは?
C3
ABCDE
1WhatValueISERRORISNAISERR
2Not found#N/ATRUETRUEFALSE
3Divide by 0#DIV/0!TRUEFALSETRUE
4Bad argument#NUM!TRUEFALSETRUE
5Text in math#VALUE!TRUEFALSETRUE
6A number42FALSEFALSEFALSE
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

ISERRORは4つのエラーすべてでTRUEです。ISNAは、検索で値が見つからないときに返る#N/AのときだけTRUEです。ISERRはその逆で、#N/A以外のすべてのエラーでTRUEです。エラーを判定するのではなく置き換えるなら、=IF(ISERROR(B2),0,B2)より=IFERROR(B2,0)のほうが短く書けます。IFERRORのページをご覧ください。

ISEVENとISODD

=ISEVEN(B2)は偶数のとき、=ISODD(B2)は奇数のときTRUEです。0は偶数で、マイナスの数も使えます。小数は先に整数に切り捨てられるので、2.5は2として扱われます:

偶数か奇数か
C2
ABCD
1ItemNumberISEVENISODD
2A4TRUEFALSE
3B7FALSETRUE
4C0TRUEFALSE
5D-3FALSETRUE
6E2.5TRUEFALSE
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

文字列を渡すと#VALUE!になります。縞模様の行や「1行おき」の規則のために偶数行と奇数行を見分けるには、=ISEVEN(ROW())を使います。

練習: 名前に「pro」が含まれるか

Proモデルを探す
B2
AB
1ProductPro model
2Laptop Pro 14
3Office Chair
4Monitor PRO 27
5Desk Lamp
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

やってみよう: B2で、A2の商品名に大文字小文字を問わず「pro」が含まれていれば「Yes」、そうでなければ「No」と表示してください。数式はB5まで下にコピーされます。

どのIS関数を使うか

関数TRUEになる値
ISBLANK空のセル(""、スペース、0は除く)
ISNUMBER数値(日付、時刻、パーセントを含む)
ISTEXT文字列(文字列として保存された数値と""を含む)
ISNONTEXT文字列以外のすべて(空のセルを含む)
ISLOGICALTRUEまたはFALSE
ISERRORすべてのエラー
ISERR#N/A以外のすべてのエラー
ISNA#N/Aだけ
ISEVEN / ISODD偶数 / 奇数
ISFORMULA数式が入ったセル
ISREFセル参照

数値に見える値で=ISNUMBER(B2)がFALSEになるなら、それは文字列として保存されていて、SUMでも飛ばされます。まずデータを直してください(方法は文字列を数値に変換するページにあります)。そうすればIS関数の判定と合計が一致します。

よくある質問

空に見えるセルでISBLANKがFALSEを返すのはなぜですか?

セルに見えないものが入っているからです。空の文字列を返す数式(="")、スペース、アポストロフィなどです。ISBLANKがTRUEになるのは本当に空のセルだけです。""も空として扱うなら、代わりに=B2=""か=LEN(B2)=0で判定します。

Excelでセルが数値かどうか調べるには?

=ISNUMBER(B2)を使います。数値、日付、パーセントにはTRUEを返し、文字列にはFALSEを返します。'42のように文字列として保存された数値もFALSEです。IFの中なら=IF(ISNUMBER(B2),B2*2,"Not a number")です。

ISERROR、ISERR、ISNAの違いは何ですか?

ISERRORはどのエラーでもTRUEです。ISNAは#N/AのときだけTRUEです。ISERRは#N/A以外のすべてのエラーでTRUEです。エラーを判定するのではなく置き換えたいなら、IFERRORかIFNAを使います。

数値なのにISNUMBERがFALSEを返すのはなぜですか?

数値が文字列として保存されているからです。取り込んだデータによくあり、セルには42と表示されていても中身は文字列の「42」で、たいてい左揃えで緑色の三角形が付いています。=ISTEXT(B2)はこれにTRUEを返します。VALUEか--B2で変換してください。

Excelで「空白でなければ」のIFはどう書きますか?

空の文字列と等しくないかを判定します:=IF(B2<>"","Filled","Empty")、または=IF(NOT(ISBLANK(B2)),"Filled","Empty")。1つ目は""を返す数式も空として扱います。

Coddyのプログラミング言語のイラスト

Coddyでコードを学ぼう

始める