スプレッドシートで「このセルに入っているのは文字列以外のデータ?」と確認したくなったことはありませんか?
数値や日付が入るべきセルに文字列が紛れていると、集計結果がおかしくなることがありますよね。
そんなときに使えるのがISNONTEXT関数です。セルの値が文字列以外かどうかをTRUE/FALSEで判定してくれます。
この記事では基本の書き方からIF関数との組み合わせまで紹介します。ISTEXT関数との逆関数関係や、他のIS系関数との使い分けも解説しています。
ISNONTEXT関数とは?
ISNONTEXT関数(読み方: イズノンテキスト関数)は、指定した値が文字列以外かどうかを判定する関数です。
名前はIS(〜かどうか)+ NON(〜でない)+ TEXT(文字列)が由来です。
A1が数値なら =ISNONTEXT(A1) はTRUEを返します。
引数はチェックしたい値の1つだけです。結果はTRUEかFALSEの2択なので、とてもシンプルですね。
ISNONTEXT関数にできることをまとめると、次のとおりです。
- セルの値が文字列以外かどうかをTRUE/FALSEで判定する
- IF関数と組み合わせて数値・文字列で処理を分岐する
- データ入力チェックで文字列が混入していないか検出する
- 条件付き書式と組み合わせて非テキストセルをハイライトする
NOTE
ISNONTEXT関数はGoogleスプレッドシートの全バージョンで使えます。Excelとの互換性も完全なので、ファイルのやり取りでも安心です。
ISNONTEXT関数の書き方(構文と引数)
基本構文
=ISNONTEXT(値)
カッコの中に文字列以外かどうかを判定したいセルや値を指定するだけです。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 値 | 必須 | 文字列以外かどうかを確認したいセル参照や値(例: A1) |
引数は1つだけです。値が文字列以外ならTRUE、文字列ならFALSEを返します。
ISNONTEXT関数がTRUE/FALSEを返すパターン
どんな値がTRUE(文字列以外)と判定されるかを一覧にしました。
| データの種類 | 判定結果 |
|---|---|
| 整数・小数(100、3.14など) | TRUE(文字列以外) |
| 日付・時刻 | TRUE(文字列以外) |
| 論理値(TRUE/FALSE) | TRUE(文字列以外) |
| エラー値(#N/Aなど) | TRUE(文字列以外) |
| 空白セル | TRUE(文字列以外) |
| 文字列(”abc”、”東京”など) | FALSE |
| 数値を文字列として入力(’100) | FALSE |
| 数式の結果が文字列 | FALSE |
| 空文字列(””) | FALSE |
ISTEXT関数と完全に逆の結果になります。ISTEXTがTRUEを返す値にはFALSEを、FALSEを返す値にはTRUEを返します。
特に注意したいポイントが2つあります。
まず、空白セルはTRUEになります。何も入力されていないセルは「文字列以外」として扱われます。数値だけを検出したいなら、ISNUMBERのほうが適切です。
もうひとつは空文字列(””)です。数式で ="" と返した結果は文字列扱いなので、FALSEになります。見た目は空白と同じなのに判定結果が異なる点に注意しましょう。
TIP
=NOT(ISTEXT(A1))と=ISNONTEXT(A1)は同じ結果を返します。ISNONTEXT関数はISTEXT関数の結果をNOTで反転したものと同等です。
ISNONTEXT関数の基本的な使い方
セルが文字列以外かどうかを判定する
もっともシンプルな使い方です。A1が文字列以外かどうかを確認します。
=ISNONTEXT(A1)
A1に数値や日付が入っていればTRUE、文字列ならFALSEが返ります。
IF関数と組み合わせて表示を切り替える
ISNONTEXT関数はIF関数と組み合わせることが多いです。文字列以外のときと文字列のときで表示を変えます。
=IF(ISNONTEXT(B2), "文字列以外", "文字列")
B2が数値・日付・空白などなら「文字列以外」、文字列なら「文字列」と表示します。
文字列のときだけ警告を出す
数値を入力すべきセルに文字列が混入していないかチェックするパターンです。
=IF(ISNONTEXT(B2), "OK", "数値を入力してください")
B2が文字列以外なら「OK」と表示します。文字列が入っていたら入力を促すメッセージを出します。
複数セルの非テキストチェック
複数のセルがすべて文字列以外かどうかを確認するパターンです。
=AND(ISNONTEXT(A2), ISNONTEXT(B2), ISNONTEXT(C2))
A2・B2・C2がすべて文字列以外ならTRUEです。1つでも文字列があればFALSEになります。
ISNONTEXT関数の実務活用パターン
数値列に紛れた文字列を検出する
売上データや金額列に文字列が混入していると、SUM関数の合計が合わなくなります。
=IF(ISNONTEXT(C2), "", "文字列が混入しています")
C2が文字列以外なら空欄のままにします。文字列が入っていたら警告メッセージを表示します。
FILTER関数で文字列以外のデータだけを抽出する
FILTER関数とISNONTEXT関数を組み合わせると、文字列以外のデータが入っている行だけを抽出できます。
=FILTER(A2:B, ISNONTEXT(A2:A))
A列が文字列以外の行だけをまとめて取り出します。ただし空白行も含まれるので、除外するなら次のようにします。
=FILTER(A2:B, ISNONTEXT(A2:A) * NOT(ISBLANK(A2:A)))
条件付き書式で非テキストセルをハイライト
ISNONTEXT関数を条件付き書式のカスタム数式に使うと、文字列以外のセルを色付けできます。
手順:
- チェックしたい範囲(例: B2:B20)を選択する
- 「表示形式」→「条件付き書式」を開く
- 「カスタム数式」を選び、次の数式を入力する
=ISNONTEXT(B2)
- 書式スタイルで背景色を青などに設定する
これで数値・日付・空白セルがひと目でわかります。文字列列に紛れた数値データの発見に役立ちます。
ArrayFormulaで全行一括判定
ISNONTEXT関数をARRAYFORMULA関数と組み合わせると、1つの数式で全行分を処理できます。
=ARRAYFORMULA(IF(A2:A="", "", IF(ISNONTEXT(A2:A), "数値等", "文字列")))
A列にデータがある行だけを対象に、文字列以外か文字列かを一括判定します。
ARRAYFORMULA関数を使えば数式を下方向にコピーする必要がなくなるので、行が追加されても自動対応です。
空白を除外して「数値・日付・論理値」だけを検出する
ISNONTEXT関数は空白セルにもTRUEを返します。空白を除外して、実際にデータがあるセルだけを対象にしたい場合は次のようにします。
=AND(ISNONTEXT(A2), NOT(ISBLANK(A2)))
A2が文字列以外で、かつ空白でない場合にTRUEです。数値・日付・論理値・エラー値が該当します。
よくあるエラーと対処法
ISNONTEXT関数自体がエラーを返すことはほとんどありません。ただし「思った結果にならない」ケースがあります。
| 症状 | 原因 | 対処法 |
|---|---|---|
| 数値なのにFALSEになる | セルの書式が「書式なしテキスト」 | 書式を「自動」に変更し、値を再入力する |
| 数値なのにFALSEになる | 先頭にアポストロフィ(')がある | アポストロフィを削除して再入力する |
| 空白セルがTRUEになる | ISNONTEXT関数は空白をTRUEと判定する | 空白を除外するなら =AND(ISNONTEXT(A1), NOT(ISBLANK(A1))) |
| 数式結果の空文字列がFALSEになる | ="" は文字列として扱われる | 空文字列もTRUEにしたいなら =OR(ISNONTEXT(A1), A1="") |
| 日付がTRUEになる | 日付はシリアル値(数値)として扱われる | 日付をFALSEにしたいなら TEXT関数で文字列に変換する |
「数値なのにFALSE」の見分け方
セルが数値に見えるのにFALSEになる場合があります。実際には文字列として保存されている可能性があります。
=TYPE(A2)
結果が1なら数値、2なら文字列です。
数値のように見えても書式設定や先頭のアポストロフィで文字列扱いになっている場合があります。TYPE関数で実際のデータ型を確認しましょう。
似た関数との違い・使い分け
ISNONTEXT関数と関連する関数をまとめました。
| 関数 | 判定対象 | 戻り値 | 用途 |
|---|---|---|---|
| ISNONTEXT | 文字列以外かどうか | TRUE/FALSE | セルごとの非テキストチェック |
| ISTEXT | 文字列かどうか | TRUE/FALSE | セルごとの文字列チェック |
| ISNUMBER | 数値かどうか | TRUE/FALSE | セルごとの数値チェック |
| ISBLANK | 空白かどうか | TRUE/FALSE | 未入力セルのチェック |
ISNONTEXTとISTEXTの関係(逆関数)
ISNONTEXTとISTEXTは完全な逆関数です。すべてのデータに対してTRUE/FALSEが反転します。
| データの種類 | ISNONTEXT | ISTEXT |
|---|---|---|
| 文字列(”abc”) | FALSE | TRUE |
| 数値(100) | TRUE | FALSE |
| 日付・時刻 | TRUE | FALSE |
| 論理値(TRUE) | TRUE | FALSE |
| エラー(#N/A) | TRUE | FALSE |
| 空白 | TRUE | FALSE |
| 空文字列(””) | FALSE | TRUE |
=ISNONTEXT(A1) は =NOT(ISTEXT(A1)) と同じ結果です。どちらを使っても構いませんが、ISNONTEXT関数のほうが数式が短く読みやすいです。
使い分けの目安はこうです。「文字列であること」を確認したいならISTEXT、「文字列でないこと」を確認したいならISNONTEXTを使いましょう。
ISNONTEXTとISNUMBERの違い
ISNONTEXTは「文字列以外すべて」をTRUEにします。ISNUMBERは「数値だけ」をTRUEにします。
| データの種類 | ISNONTEXT | ISNUMBER |
|---|---|---|
| 数値(100) | TRUE | TRUE |
| 日付・時刻 | TRUE | TRUE |
| 論理値(TRUE) | TRUE | FALSE |
| エラー(#N/A) | TRUE | FALSE |
| 空白 | TRUE | FALSE |
ISNONTEXTは論理値・エラー・空白もTRUEです。「数値だけ」を判定したいならISNUMBER関数を使いましょう。
ISNONTEXTとISBLANKの使い分け
ISNONTEXT関数は空白セルをTRUEと判定します。空白を別途チェックしたいならISBLANK関数を組み合わせましょう。
=IF(ISBLANK(A2), "未入力", IF(ISNONTEXT(A2), "数値等", "文字列"))
まずISBLANK関数で空白を判定します。空白でなければISNONTEXT関数で文字列以外かどうかを判定します。
ISNONTEXTと他のIS系関数
ISNONTEXT関数はIS系情報関数のひとつです。
| 関数 | 判定内容 |
|---|---|
| ISBLANK | 空白かどうか |
| ISNUMBER | 数値かどうか |
| ISTEXT | 文字列かどうか |
| ISNONTEXT | 文字列以外かどうか |
| ISLOGICAL | 論理値かどうか |
| ISERROR | エラーかどうか |
| ISFORMULA | 数式が入っているかどうか |
データの種類に応じたチェックをしたいときは、IS系関数を使い分けてみてください。
まとめ
ISNONTEXT関数は、セルの値が文字列以外かどうかをTRUE/FALSEで判定するシンプルな関数です。
ポイントをおさらいしましょう。
- 引数は1つ。文字列以外ならTRUE、文字列ならFALSE
- ISTEXT関数の逆関数で、
=NOT(ISTEXT(...))と同じ結果 - 空白セルはTRUEになる。空白を除外するならISBLANK関数と組み合わせる
- 「数値に見えるのにFALSE」のときはセルの書式を確認する
- 数値だけを判定したいならISNUMBER、文字列を確認したいならISTEXTを使い分ける
データの整合性チェックや入力検証に、ぜひ活用してみてください。
関連記事
文字列かどうかを判定するなら、ISTEXT関数の使い方もあわせてどうぞ。
数値かどうかを判定するなら、ISNUMBER関数の使い方もチェックしてみてください。
空白セルの判定には、ISBLANK関数の使い方が便利です。
エラー判定をしたいときは、ISERROR関数の使い方をご覧ください。
論理値(TRUE/FALSE)かどうかを判定するなら、ISLOGICAL関数の使い方もチェックしてみてください。
