要点 —
IS…関数はそれぞれ、セルについて1つの Yes/No の問いに答えます:ISNUMBER、ISTEXT、ISBLANK、ISERROR、ISNA(と仲間たち)。これらは 分類はしても、値を決して変えません——役目はまるごと、数式が壊れる前に守る ことです。知っておくべき3点。ISBLANKは「空に見える」より厳密——=""を 保持するセルや""を返す数式は、空白ではありません。ISERRORはあらゆる エラー型を飲み込む(本物の#REF!/#NAME?のバグを隠す)一方、ISNAは#N/Aだけを捕まえます。そしてISNUMBER(SEARCH(...))は部分一致をテストする いちばんきれいな方法です。IS関数に手を伸ばすのは、組み込みのガード (IFERROR、XLOOKUPの第4引数)が すでに仕事をしていないときだけ。全バージョンで動作します。
=IF(ISNUMBER(SEARCH("apple", A2)), "Match", "No") ' 部分一致、大文字小文字を無視
=IF(ISBLANK(A2), "Missing", A2) ' 真の空白チェック
IS ファミリーは Excel の診断ツールです——新しい値を計算するのではなく、セルが何で あるかを報告する小さな関数たちです。うまく使えば、たった1行の悪いデータで数式が エラーになるのを止めます。不用意に使えば、見る必要のあったまさにそのバグを隠します。 違いは、それぞれが実際に何をテストしているかを知っているかどうかです。
この記事で学べること
- 考え方の軸:新しい値ではなく結論を返す検査官
- なぜ
ISBLANKは「空っぽに見える」より厳密なのか——""の罠 ISERROR(すべてを捕まえる)vsISNA(#N/Aだけ)——そしてそれが重要な理由IF(ISERROR(x), fallback, x)の隠れたコスト:xを二度計算するISNUMBERの切り札——SEARCHをきれいな部分一致テストに変える- IS関数が
IFなしで輝く場所
考え方の軸:変換器ではなく検査官
すべての IS… 関数は値を1つ受け取り、TRUE か FALSE を返します——セルの中身に
ついての結論です。それだけです。ISNUMBER は「これは数値か?」を尋ね、ISTEXT は
「これは文字列か?」を、ISBLANK は「これは本当に空か?」を、ISERROR は「これは
破綻したか?」を尋ねます。
=ISNUMBER(A2) ' A2 が数値を保持していれば TRUE(数値に見える文字列ではなく)
=ISTEXT(A2) ' A2 が文字列を保持していれば TRUE
=ISERROR(A2) ' A2 が何らかのエラー値なら TRUE
これらは常に報告するだけなので、IS関数が最終的な答えになることは決してありません
——AND/OR と同じで、その結論は何かへ渡さねば
なりません:IF、条件付き書式のルール、データ入力規則の
数式、あるいは配列マスク。そしてこの見方が、ファミリー全体を貫く原則を与えます:
数式がエラーになる前に守るために IS関数を使う——ただし、よりきれいな専用のガードが
まだ存在しないときだけ。
ISBLANKは「空に見える」より厳密
ISBLANK は誰もが読み間違える1つです。これは、本当に、物理的に空のセル——何も
打たれておらず、数式もない——に対してだけ TRUE を返します。数式が空文字列を返した
せいで空に見えるセルは、空白ではありません。
=ISBLANK(A2) ' A2 が ="" や =IF(...,"") を含む -> FALSE(数式を保持している)
=ISBLANK(A2) ' A2 が残った空白 " " -> FALSE(空白文字を保持している)
これが「でもセルは空なのに、なぜチェックが失敗するの?」の元凶です。「見える内容が
ない」の正直なテストは、たいてい ISBLANK ではなく値の比較です。
=IF(A2="", "Empty", "Filled") ' 数式からの "" も空として扱う
=IF(LEN(A2)=0, "Empty", "Filled") ' 同じ考え、長さがゼロだと明示
ISBLANK は「誰もここに何も入れていない」を特に意味するときに使います——たとえば、
本当に手つかずの入力セルを、数式が "" で埋めたものと区別するとき。「何も表示され
ない」を意味するなら ="" か LEN()=0 を使います。これらは交換可能ではなく、
間違った方を選ぶのは古典的な静かなバグです。(これは "" を返す
IF の癖の鏡像です——その "" こそが ISBLANK を
だますものです。)
ISERRORはすべてを捕まえ、ISNAは #N/A だけを捕まえる
ISERROR はあらゆるエラーに対して TRUE を返します——#N/A、#REF!、
#DIV/0!、#NAME?、#VALUE!、その全部です。便利そうに聞こえますが、たいていは
間違いです。ルックアップを IF(ISERROR(...)) で包むと、「見つからない」を捕まえる
だけでなく——削除された列からの #REF! や打ち間違いからの #NAME? まで黙らせる
ので、本物の数式のバグがフォールバックの陰に消え、あなたは決して気づきません。
=IF(ISERROR(VLOOKUP(A2, T, 2, 0)), "Not found", VLOOKUP(A2, T, 2, 0))
' #REF!/#NAME? も隠す — 本物のバグが今や "Not found" と表示され、あなたは知らないまま
精密な道具は ISNA で、これは**#N/A だけ**——「一致なし」のエラー——を捕まえ、
他のあらゆるエラーは大声で表に出させます。本物のバグを見えるところに留めておきたい、
まさにその場所で。
=IF(ISNA(MATCH(A2, List, 0)), "New", "Existing") ' 「一致なし」だけを処理する
これは IFERROR vs IFNA と同じ教訓です:
すべてではなく、想定する1つのエラーを捕まえること。網の広さを、実際に捕まえたい
魚の大きさに合わせます。
隠れたコスト:IF(ISERROR(x), fallback, x) は x を二度計算する
エラーを処理したい場合でさえ、古い IF(ISERROR(...)) パターンには実際の欠点が
あります:高コストな部分を二度評価するのです——テストのために一度、返すために
もう一度。数千行にわたる重いルックアップでは、これが作業を倍にします。
' 旧式 — VLOOKUP がセルごとに二度走る
=IF(ISERROR(VLOOKUP(A2,T,2,0)), "n/a", VLOOKUP(A2,T,2,0))
' 現代 — 一度だけ計算
=IFERROR(VLOOKUP(A2,T,2,0), "n/a")
=IFNA(VLOOKUP(A2,T,2,0), "n/a") ' #N/A だけ、本物のエラーは見えるまま
=XLOOKUP(A2, Keys, Vals, "n/a") ' 内蔵の if_not_found、ラッパーは一切不要
だから正直な優先順位はこうです:IFERROR/IFNA か
XLOOKUP の第4引数を優先し、IF(ISERROR(...)) は、
エラー分岐が値を再計算するのとは違う何かを返す稀なケースのためだけに取っておく。
ISERROR/ISNA は、ブールそのものが必要なときには依然としてその立場に値します——
SUMPRODUCT の中、条件付き書式、あるいは何行がエラーになったかの集計で。
ISNUMBERの切り札:きれいな部分一致テスト
このファミリーでいちばん役立つのは、それ自体を目的とした型チェックではありません——
ISNUMBER を SEARCH/FIND と組み合わせることです。
SEARCH は部分文字列を見つけたら位置を、見つからなければ #VALUE! エラーを
返します。それを ISNUMBER で包むと、その「数値かエラーか」がきれいな
TRUE/FALSE の「このテキストを含むか?」に変わります。
=ISNUMBER(SEARCH("apple", A2)) ' A2 が "apple" を含めば TRUE(大文字小文字を無視)
=ISNUMBER(FIND("APPLE", A2)) ' FIND は大文字小文字を区別する
これが「このセルは X を含むか」の慣用的なテストで、そのまま条件付き書式(キーワードを
含む行をすべて強調表示)、FILTER のマスク、
SUMPRODUCT の集計に落とし込めます——どれも
途中にエラー値を欲しがりません。
ISNUMBERは「文字列として保存された数値」も診断する
ISNUMBER は、データインポートで一番の頭痛の種を確かめる最速の方法です:数値に
見えるのに実は文字列で、だから合計もソートも拒む値です。1234 に見えるものに対して
=ISNUMBER(A2) が FALSE を返したら、犯人を見つけたということです。
=ISNUMBER(A2) ' 文字列として保存された数値には FALSE -> VALUE / *1 で直す
診断できたら、VALUE/NUMBERVALUE か *1 / --
の強制変換で変換します。ISNUMBER はテスト、それらは治療です。
IS関数がIFなしで輝く場所
すでに TRUE/FALSE を返すので、IS関数は、ブールを欲しがりラベルは要らない場所に
ぴったりです——IF は不要です。
- 条件付き書式 —
=ISERROR(A2)のルールはすべてのエラーセルを赤く塗り、=ISNUMBER(SEARCH("urgent", A2))は一致する行を強調表示します。 - データ入力規則 —
=ISNUMBER(A1)のカスタムルールは、数値入力欄に文字列を打つ人を ブロックします。 - 集計 —
=SUMPRODUCT(--ISNUMBER(A2:A100))は本物の数値のセルがいくつあるかを 数え、=SUMPRODUCT(--ISERROR(Range))はクリーンアップ前にエラーを数えます。
いずれも結論そのものが答えです——IF(..., TRUE, FALSE) で包むのは、ただのノイズ
でしょう。
判断:どのIS関数か、それともよりきれいなガードか
- 「ここには一切何もないか?」 → 本当に手つかずのセルには
ISBLANK、数式の""も空として数えるべきなら=""かLEN()=0。 - 「ルックアップが外したか?」 → まず
IFNA/XLOOKUPの第4引数、ブールが 必要ならISNA、ISERRORは決して使わない(本物のバグを隠す)。 - 「どんなエラーでも処理するか?」 →
IF(ISERROR(...))(二度計算)よりIFERROR(一度計算)。 - 「このテキストは X を含むか?」 →
ISNUMBER(SEARCH(...))。 - 「これは本物の数値か?」 →
ISNUMBER、それからVALUE/*1で直す。
ExcelMaster の使いどころ
IS関数は、「エラーにしない」が静かに「見る必要のあったバグを隠す」に変わる場所です。
ExcelMaster は意図に合ったガードを選びます——見つからないルックアップだけを
処理すべきときは ISNA か IFNA、どんな失敗もフォールバックすべきときは IFERROR、
「空」が曖昧なときは真の空白の ISBLANK と LEN()=0 の使い分け——そうして安全網が、
あなたが意図したケースを捕まえ、本物のエラーは直せる場所に表へ出させます。
よくある質問
空に見えるセルで ISBLANK が FALSE を返すのはなぜ?
セルが本当は空でないからです——"" を返す数式、空白文字、または見えない文字を
保持しています。ISBLANK は物理的に空のセルに対してだけ TRUE です。数式の "" も
空として扱うには、代わりに =A2="" か =LEN(A2)=0 をテストします。
ISERROR と ISNA の違いは?
ISERROR はあらゆるエラー値に対して TRUE を返し、ISNA は #N/A に対して
だけ TRUE を返します。ルックアップには ISNA(か IFNA)を使い、本物の
#REF! や #NAME? がフォールバックの陰に隠れず、なお表に出るようにします。
セルが特定の文字列を含むか調べるには?
SEARCH を ISNUMBER で包みます:=ISNUMBER(SEARCH("apple", A2)) は A2 が "apple" を
含むとき TRUE です(大文字小文字を無視)。大文字小文字を区別するテストには、
SEARCH の代わりに FIND を使います。
IF(ISERROR(...)) と IFERROR、どちらを使うべき?
IFERROR を優先します——数式を一度だけ評価するのに対し、IF(ISERROR(x), fb, x) は
x を二度計算します。IF(ISERROR(...)) は、エラー分岐が値の再計算とは違う何かを
返すときだけ取っておきます。
Excelで数値が本当は文字列かどうかを知るには?
=ISNUMBER(A2) でテストします。数値に見えるものに対して FALSE を返したら、その値は
文字列として保存されています——VALUE、
NUMBERVALUE、または *1 / -- の強制変換で変換します。
検証環境
検証環境: Excel 365(Windows 11)— 最終確認 2026-07-04。
関連ガイド: ExcelのIFERROR関数 · ExcelのAND & OR関数 · ExcelのNOT & XOR関数 · ExcelのFIND & SEARCH関数 · ExcelのVALUE関数
