「このセル、文字列が入ってないはずなのに計算がうまくいかない……」そんな経験はありませんか。見た目は数値に見えても、実は文字列型で格納されているケースはよくあります。
数値が入るべきセルに文字列が紛れ込むと、SUM関数やVLOOKUPで思わぬトラブルの原因になります。
そんなときに便利なのがISNONTEXT関数です。この記事では基本の書き方から実務で使えるパターンまで、まとめて紹介します。
この記事は次のような人におすすめ
– セルの値が文字列以外(数値・論理値・空白など)か確認したい
– 数値が入るべき列に文字列が混ざっていないかチェックしたい
– ISTEXT関数との違いや使い分けを知りたい
ISNONTEXT関数とは?
ISNONTEXT(いず のん てきすと)関数は、指定した値が文字列以外かどうかを判定する関数です。
対象が文字列以外であれば TRUE を返します。数値・論理値・空白・エラー値はすべて TRUE です。文字列のときだけ FALSE になります。
IS系(情報関数)の1つで、ISTEXT関数と対になる関数です。ISTEXTは「文字列ですか?」と聞く関数です。一方、ISNONTEXTは「文字列ではないですよね?」と聞く関数だと考えてください。
NOTE
ISNONTEXT関数は Excel 2003 以降のすべてのバージョンで使用できます。
ISNONTEXT関数の書き方(構文と引数)
基本構文
=ISNONTEXT(テストの対象)
引数の説明
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| テストの対象 | 必須 | 文字列以外かどうか判定したい値またはセル参照 |
引数は1つだけです。省略はできません。セル参照・直接値・数式の結果のいずれも指定できます。
ISNONTEXT関数の基本的な使い方
まずはシンプルな例で動きを確認してみましょう。
値の種類ごとの判定結果
さまざまなデータをISNONTEXT関数で判定すると、次のようになります。
| 数式 | 結果 | 理由 |
|---|---|---|
=ISNONTEXT(100) | TRUE | 数値なので文字列以外 |
=ISNONTEXT(TRUE) | TRUE | 論理値なので文字列以外 |
=ISNONTEXT(A1) ※A1が空白 | TRUE | 空白セルは文字列以外 |
=ISNONTEXT(#N/A) | TRUE | エラー値も文字列以外 |
=ISNONTEXT("東京") | FALSE | 文字列なので FALSE |
=ISNONTEXT("123") | FALSE | ダブルクォーテーションで囲んだ文字列型 |
=ISNONTEXT("") | FALSE | 空文字列も文字列型 |
TIP
空白セルと空文字列(””)の結果は異なります。空白セルは TRUE ですが、空文字列は FALSE です。空白かどうかを判定したい場合は ISBLANK関数 を使いましょう。
セル参照で判定する
セル参照を使えば、特定のセルの値が文字列以外かを確認できます。
=ISNONTEXT(A1)
A1 に 100 や TRUE が入っていれば TRUE です。"東京" のような文字列なら FALSE になります。
数式の結果を判定する
ISNONTEXT関数の引数に数式を直接入れることもできます。
=ISNONTEXT(A1+B1)
計算結果は数値なので、この数式は TRUE です。
一方、=ISNONTEXT(A1&B1) は & 演算子の結果が文字列になるため FALSE です。
ISNONTEXT関数の実務活用パターン
パターン1: IF関数と組み合わせてデータ型を判定する
セルの内容が文字列以外かどうかに応じて処理を分けたい場面で使えます。
=IF(ISNONTEXT(B2),"数値・日付です","文字列です")
B2 が数値や日付なら「数値・日付です」と表示します。文字列なら「文字列です」と表示します。
データの品質チェックで「文字列以外であること」を確認したいときに便利です。
パターン2: 数値列の正常性をチェックする
売上や在庫数など、数値が入るべき列で「文字列が混入していないか」を一括チェックできます。
=ISNONTEXT(C2)
数値型の 1234 なら TRUE です。文字列型の “1234” なら FALSE になります。FALSE のセルが問題箇所です。
条件付き書式と組み合わせると、問題のあるセルだけを目立たせることもできます。
- 対象範囲を選択します
- 「ホーム」タブ →「条件付き書式」→「新しいルール」を選択します
- 「数式を使用して、書式設定するセルを決定」を選びます
- 数式欄に
=NOT(ISNONTEXT(C1))と入力します - 好きな書式(赤い塗りつぶしなど)を設定します
TIP
=NOT(ISNONTEXT(C1))は「文字列のセル」を検出します。同じ結果は=ISTEXT(C1)でも得られます。どちらを使っても構いません。
パターン3: SUMPRODUCTと組み合わせて文字列以外のセルを数える
範囲内に文字列以外のデータがいくつあるかを数えるには、SUMPRODUCT関数と組み合わせます。
=SUMPRODUCT(ISNONTEXT(A2:A20)*1)
ISNONTEXT(A2:A20) が各セルに対してTRUE/FALSEの配列を返します。*1 で数値化し、SUMPRODUCTで合計すれば個数がわかります。
NOTE
空白セルもISNONTEXTでTRUEになります。空白を除外したい場合は
=SUMPRODUCT((ISNONTEXT(A2:A20))(A2:A20<>"")1)のように条件を追加してください。
パターン4: データ入力規則で数値のみ許可する
特定の列に数値だけを入力させたいときに活用できます。
データの入力規則(データタブ → データの入力規則)で、「ユーザー設定」の数式に次のように入力します。
=ISNONTEXT(D2)
D2 に文字列を入力するとエラーメッセージが表示されます。金額列や数量列の入力制限に使えます。
TIP
ただし、この方法では空白セルもTRUEとなるため通過してしまいます。空白も禁止したい場合は
=AND(ISNONTEXT(D2), D2<>"")としましょう。
パターン5: VLOOKUP前にデータ型を確認する
VLOOKUP関数で検索値が見つからないとき、原因がデータ型の不一致だったというケースはよくあります。検索キーが数値型なのにテーブル側が文字列型だと、見た目は同じ値でもヒットしません。
=ISNONTEXT(A2)=ISNONTEXT(D2)
検索キー(A2)とテーブルの先頭列(D2)の結果を比較します。両方ともTRUEまたは両方ともFALSEならデータ型が一致しています。
TIP
VLOOKUP の #N/A エラーは ISNA関数 で検知できます。「なぜ #N/A が出るか」を調べるときにISNONTEXTでデータ型を確認すると原因の切り分けがスムーズです。
ISNONTEXT関数とISTEXT関数の違い
ISNONTEXTと ISTEXT関数 は対の関係にあります。判定の結果が常に反転する関係です。
| 入力値 | ISNONTEXT の結果 | ISTEXT の結果 |
|---|---|---|
| 100(数値) | TRUE | FALSE |
| TRUE(論理値) | TRUE | FALSE |
| 空白セル | TRUE | FALSE |
| #N/A(エラー値) | TRUE | FALSE |
| “東京”(文字列) | FALSE | TRUE |
| “”(空文字列) | FALSE | TRUE |
つまり =ISNONTEXT(A1) と =NOT(ISTEXT(A1)) は同じ結果です。
使い分けのポイント: 「文字列以外か?」を確認したいならISNONTEXTがシンプルです。「文字列か?」を確認したいなら ISTEXT関数 を使いましょう。条件式の読みやすさで選んでください。
ISNONTEXT関数とTYPE関数の違い
「このセルに何が入っているか調べたい」という場面では、TYPE関数も選択肢に入ります。ISNONTEXTとTYPEは目的が少し違うので、使い分けを整理しておきましょう。
| 比較項目 | ISNONTEXT | TYPE |
|---|---|---|
| 戻り値 | TRUE / FALSE | 1(数値)/ 2(文字列)/ 4(論理値)/ 16(エラー)/ 64(配列) |
| 判定の範囲 | 「文字列か、それ以外か」の2択 | データ型を5種類に分類 |
| 空白セルの扱い | TRUE(文字列以外) | 1(数値扱い) |
| 向いている場面 | 数値列の文字列混入チェック | セルの中身が数値なのか文字列なのか細かく分類したいとき |
ISNONTEXTは「文字列以外かどうか」だけを知りたいときにシンプルです。一方、TYPE関数は「数値なのか、論理値なのか、エラーなのか」まで区別できます。
たとえば、数値列の入力チェックで「文字列が混ざっていないか」を調べるなら、ISNONTEXTのほうが直感的ですよ。
=ISNONTEXT(B2) ' TRUE / FALSE でひと目でわかる
=TYPE(B2) ' 1なら数値、2なら文字列...と変換が必要
「数値か文字列かだけ知りたい」→ ISNONTEXT。「データ型を細かく知りたい」→ TYPE関数、と覚えておくとスムーズです。
よくあるエラーと対処法
ISNONTEXT関数自体がエラーを返すことはほとんどありません。ただし「思った結果にならない」ケースがあります。
| 症状 | 原因 | 対処法 |
|---|---|---|
| 数字なのに FALSE が返る | セルの表示形式が「文字列」のため文字列型で格納されている | VALUE関数で数値に変換するか、「区切り位置」機能で一括変換する |
| 空白セルで TRUE が返る | 空白セルは文字列ではないためTRUEが正しい動作 | 空白判定には ISBLANK関数 を使う |
| 日付セルで TRUE が返る | Excelの日付はシリアル値(数値)で管理されている | 日付は内部的に数値なのでTRUEが正しい動作 |
| 空文字列(””)で FALSE が返る | 空文字列も文字列型である | ISNONTEXTでは空文字列はFALSE。空白と区別したい場合は =AND(ISNONTEXT(A1), A1<>"") を使う |
| エラー値(#N/A など)で TRUE が返る | エラー値は文字列ではないためTRUEが正しい動作 | エラー判定には ISERROR関数 や IFERROR関数 を使う |
IS系12関数の違い・使い分け
IS系関数は、セルに入っているデータの種類を判定するファミリーです。用途に合わせて使い分けましょう。
| 関数名 | 判定内容 | TRUE になる例 |
|---|---|---|
| ISBLANK | 空白セルか | 未入力のセル |
| ISERROR | 任意のエラー値か | #N/A, #VALUE!, #REF! など |
| ISERR | #N/A 以外のエラー値か | #VALUE!, #REF!, #DIV/0! など |
| ISNA | #N/A エラーか | #N/A のみ |
| ISLOGICAL | 論理値(TRUE/FALSE)か | TRUE, FALSE |
| ISNUMBER | 数値か | 100, 3.14, 日付のシリアル値 |
| ISTEXT | 文字列か | “東京”, “123”(文字列型) |
| ISNONTEXT(この記事) | 文字列以外か | 100, TRUE, 空白 |
| ISFORMULA | 数式が入っているか | =SUM(A1:A10) が入ったセル |
| ISREF | 有効なセル参照か | A1, Sheet2!B3 |
| ISEVEN | 偶数か | 2, 4, 100 |
| ISODD | 奇数か | 1, 3, 99 |
TIP
ISNONTEXTと対になるのが ISTEXT関数、数値判定には ISNUMBER関数 が便利です。「文字列以外か?」「数値か?」を使い分けたい場合はセットで覚えておくのがおすすめです。
まとめ
ISNONTEXT関数は、セルの値が文字列以外かどうかを判定するシンプルな関数です。
- 引数は1つだけ。文字列以外なら TRUE、文字列なら FALSE
- 空白セルも「文字列以外」なので TRUE を返す
- 数値列に文字列が混入していないかチェックするのに便利
- IF関数・条件付き書式・データ入力規則と組み合わせるのが実務での定番パターン
- ISTEXT関数とは結果が常に反転する対の関係
- 「文字列以外か?」ならISNONTEXT、「文字列か?」ならISTEXT
IS系関数ファミリーの中でも覚えておくと便利な関数です。データの品質チェックにぜひ活用してみてください。
関連記事
- ISTEXT関数の使い方|セルの値が文字列かどうかを判定する方法
- ISNUMBER関数の使い方|数値かどうかを判定する方法
- ISLOGICAL関数の使い方|論理値(TRUE/FALSE)を判定する方法
- ISBLANK関数の使い方|空白セルを判定する方法
- ISNA関数の使い方|#N/Aエラーを判定する方法
- ISERROR関数の使い方|エラー値を判定する方法
- ISFORMULA関数の使い方|数式が入っているか確認する方法
- ISREF関数の使い方|セル参照が有効かどうかを判定する方法
- IFERROR関数の使い方|エラーを非表示にする方法
- IF関数の使い方|条件分岐の基本
- VALUE関数の使い方|文字列を数値に変換する方法
- VLOOKUP関数の使い方|別の表からデータを検索する方法
- Excel関数一覧(機能別)
