スプレッドシートで「このセルに入っているのは数値?それとも文字列?」と確認したくなったことはありませんか?
データの集計や計算の前に、数値かどうかをチェックしたい場面は実務でよくありますよね。
そんなときに使えるのがISNUMBER関数です。セルの値が数値かどうかをTRUE/FALSEで判定してくれます。
この記事では基本の書き方からSEARCH関数・FIND関数との組み合わせによる部分一致検索パターンまで紹介します。
ISNUMBER関数とは?
ISNUMBER関数(読み方: イズナンバー関数)は、指定した値が数値かどうかを判定する関数です。
名前はIS(〜かどうか)+ NUMBER(数値)が由来です。
A1が数値なら =ISNUMBER(A1) はTRUEを返します。
引数はチェックしたい値の1つだけです。結果はTRUEかFALSEの2択なので、とてもシンプルですね。
ISNUMBER関数にできることをまとめると、次のとおりです。
- セルの値が数値かどうかをTRUE/FALSEで判定する
- IF関数と組み合わせて数値・文字列で処理を分岐する
- SEARCH関数やFIND関数と組み合わせて部分一致検索の判定を行う
- データ入力チェックや集計前のバリデーションに使う
NOTE
ISNUMBER関数はGoogleスプレッドシートの全バージョンで使えます。Excelとの互換性も完全なので、ファイルのやり取りでも安心です。
ISNUMBER関数の書き方(構文と引数)
基本構文
=ISNUMBER(値)
カッコの中に数値かどうかを判定したいセルや値を指定するだけです。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 値 | 必須 | 数値かどうかを確認したいセル参照や値(例: A1) |
引数は1つだけです。値が数値ならTRUE、数値以外ならFALSEを返します。
ISNUMBER関数がTRUE/FALSEを返すパターン
どんな値がTRUE(数値)と判定されるかを一覧にしました。
| データの種類 | 判定結果 |
|---|---|
| 整数(1、100、-5など) | TRUE(数値) |
| 小数(3.14、0.5など) | TRUE(数値) |
| 日付・時刻 | TRUE(数値) |
| 数式の結果が数値 | TRUE(数値) |
| 文字列(”abc”、”123″など) | FALSE |
| 論理値(TRUE/FALSE) | FALSE |
| エラー値(#N/Aなど) | FALSE |
| 空白セル | FALSE |
| 数値を文字列として入力(’100) | FALSE |
特に注意したいポイントが2つあります。
まず、日付と時刻はTRUEになります。スプレッドシートでは日付・時刻を内部的に数値(シリアル値)として扱うためです。
もうひとつは「見た目は数値なのにFALSE」になるケースです。
セルの先頭にアポストロフィ(')を付けて入力すると、文字列扱いになります。
TIP
「123」と入力したのにISNUMBER関数がFALSEを返す場合、セルの書式が「書式なしテキスト」になっている可能性があります。「表示形式」→「数値」→「自動」に変更してみてください。
ISNUMBER関数の基本的な使い方
セルが数値かどうかを判定する
もっともシンプルな使い方です。A1が数値かどうかを確認します。
=ISNUMBER(A1)
A1に数値が入っていればTRUE、文字列や空白ならFALSEが返ります。
IF関数と組み合わせて表示を切り替える
ISNUMBER関数はIF関数と組み合わせることが多いです。数値のときと文字列のときで表示を変えます。
=IF(ISNUMBER(B2), "数値", "数値以外")
B2が数値なら「数値」、それ以外なら「数値以外」と表示します。
数値のときだけ計算を実行する
文字列が混在するデータで、数値のセルだけ計算したいときに使えます。
=IF(ISNUMBER(B2), B2*1.1, "")
B2が数値なら1.1倍した値を表示します。数値以外なら空欄のままです。
複数セルの数値チェック
複数のセルがすべて数値かどうかを確認するパターンです。
=AND(ISNUMBER(A2), ISNUMBER(B2), ISNUMBER(C2))
A2・B2・C2がすべて数値ならTRUEです。1つでも数値以外があればFALSEになります。
ISNUMBER関数の実務活用パターン
ISNUMBER + SEARCHで部分一致検索(最重要パターン)
ISNUMBER関数の実務でもっとも活躍する使い方が、SEARCH関数との組み合わせです。
セルに特定の文字列が含まれるかどうかをTRUE/FALSEで判定できます。
=ISNUMBER(SEARCH("東京", A2))
A2に「東京」が含まれていればTRUEです。含まれていなければFALSEになります。
仕組みを説明します。SEARCH関数は文字列が見つかると位置(数値)を返します。見つからないと#VALUE!エラーです。
ISNUMBER関数は数値ならTRUE、エラーならFALSEを返します。そのため「含むかどうか」の判定ができるわけです。
NOTE
SEARCH関数は大文字・小文字を区別しません。「tokyo」で検索しても「TOKYO」や「Tokyo」がヒットします。大文字・小文字を区別したい場合はFIND関数を使ってください。
ISNUMBER + FINDで大文字・小文字を区別する部分一致検索
大文字・小文字を厳密に区別したい場合は、SEARCH関数の代わりにFIND関数を使います。
=ISNUMBER(FIND("ABC", A2))
A2に大文字の「ABC」が含まれていればTRUEです。「abc」や「Abc」ではFALSEになります。
SEARCH関数とFIND関数の使い分けは次のとおりです。
| 組み合わせ | 大文字・小文字 | ワイルドカード | 使いどころ |
|---|---|---|---|
| ISNUMBER + SEARCH | 区別しない | 使える | 一般的な部分一致検索 |
| ISNUMBER + FIND | 区別する | 使えない | 型番・コード検索 |
迷ったらSEARCH関数のほうが使いやすいです。型番やIDなど厳密な検索が必要なときだけFIND関数を選びましょう。
IF + ISNUMBER + SEARCHで条件分岐
部分一致の結果に応じて表示を切り替えるパターンです。実務でもっともよく使う形になります。
=IF(ISNUMBER(SEARCH("合格", C2)), "○", "×")
C2に「合格」が含まれていれば「○」、含まれていなければ「×」を表示します。
応用として、複数キーワードのいずれかが含まれるかを判定することもできます。
=IF(OR(ISNUMBER(SEARCH("東京", A2)), ISNUMBER(SEARCH("大阪", A2))), "対象", "対象外")
A2に「東京」または「大阪」が含まれていれば「対象」と表示します。
データ入力チェックで文字列混入を検出する
数値を入力すべき列に文字列が混入していないかをチェックできます。
=IF(ISNUMBER(B2), "OK", "数値を入力してください")
B2が数値なら「OK」と表示します。文字列や空白なら入力を促すメッセージを出します。
条件付き書式で数値以外のセルをハイライト
ISNUMBER関数を条件付き書式のカスタム数式に使うと、数値以外のセルを色付けできます。
手順:
- チェックしたい範囲(例: B2:B20)を選択する
- 「表示形式」→「条件付き書式」を開く
- 「カスタム数式」を選び、次の数式を入力する
=NOT(ISNUMBER(B2))
- 書式スタイルで背景色を赤やオレンジに設定する
これで数値以外のセルがひと目でわかります。データ入力後のチェックに便利です。
ArrayFormulaで全行一括判定
ISNUMBER関数をARRAYFORMULA関数と組み合わせると、1つの数式で全行分を処理できます。
=ARRAYFORMULA(IF(A2:A="", "", IF(ISNUMBER(SEARCH("東京", A2:A)), "対象", "対象外")))
A列にデータがある行だけを対象に、「東京」が含まれるかどうかを一括判定します。
ARRAYFORMULA関数を使えば数式を下方向にコピーする必要がなくなるので、行が追加されても自動対応です。
よくあるエラーと対処法
ISNUMBER関数自体がエラーを返すことはほとんどありません。ただし「思った結果にならない」ケースがあります。
| 症状 | 原因 | 対処法 |
|---|---|---|
| 数値なのにFALSEになる | セルの書式が「書式なしテキスト」 | 書式を「自動」に変更し、値を再入力する |
| 数値なのにFALSEになる | 先頭にアポストロフィ(')がある | アポストロフィを削除して再入力する |
| 日付がTRUEになる | 日付はシリアル値(数値)として扱われる | 日付を除外するなら =AND(ISNUMBER(A1), NOT(ISDATE(A1))) |
| 空白セルをTRUEにしたい | ISNUMBER関数は空白をFALSEと判定する | =OR(ISNUMBER(A1), ISBLANK(A1)) で判定する |
| SEARCH組み合わせでFALSEになる | 検索文字列が見つからない | 全角・半角の違い、スペースの有無を確認する |
「数値に見えるのにFALSE」の見分け方
セルが数値に見えるのにFALSEになる場合、文字列として保存されている可能性があります。確認方法は次のとおりです。
=TYPE(A2)
結果が1なら数値、2なら文字列です。
文字列になっている数値を数値に変換するには、VALUE関数を使います。
=VALUE(A2)
TIP
「データ」メニュー → 「データクリーンアップ」で、文字列として保存されている数値を一括変換することもできます。
似た関数との違い・使い分け
ISNUMBER関数と関連する関数をまとめました。
| 関数 | 判定対象 | 戻り値 | 用途 |
|---|---|---|---|
| ISNUMBER | 数値かどうか | TRUE/FALSE | セルごとの数値チェック |
| ISTEXT | 文字列かどうか | TRUE/FALSE | セルごとの文字列チェック |
| VALUE | 文字列を数値に変換 | 数値 or エラー | データ変換 |
| TYPE | データ型の種類を取得 | 数値(型コード) | 詳細なデータ型判定 |
ISNUMBERとISTEXTの違い
ISNUMBERとISTEXTは対になる関数です。ただし、単純な逆関係ではありません。
| データの種類 | ISNUMBER | ISTEXT |
|---|---|---|
| 数値(100) | TRUE | FALSE |
| 文字列(”abc”) | FALSE | TRUE |
| 論理値(TRUE) | FALSE | FALSE |
| エラー(#N/A) | FALSE | FALSE |
| 空白 | FALSE | FALSE |
論理値・エラー・空白はどちらもFALSEです。「数値でなければ文字列」とは限らないので注意しましょう。
ISNUMBERとTYPE関数の使い分け
TYPE関数はデータ型をより細かく分類できます。
| 型 | TYPE関数の戻り値 |
|---|---|
| 数値 | 1 |
| 文字列 | 2 |
| 論理値 | 4 |
| エラー | 16 |
| 配列 | 64 |
「数値かどうか」だけ知りたい → ISNUMBER関数がシンプルです。
「文字列・論理値・エラーも区別したい」→ TYPE関数が向いています。
ISNUMBERと他のIS系関数
ISNUMBER関数はIS系情報関数のひとつです。
| 関数 | 判定内容 |
|---|---|
| ISBLANK | 空白かどうか |
| ISNUMBER | 数値かどうか |
| ISTEXT | 文字列かどうか |
| ISLOGICAL | 論理値かどうか |
| ISERROR | エラーかどうか |
| ISFORMULA | 数式が入っているかどうか |
データの種類に応じたチェックをしたいときは、IS系関数を使い分けてみてください。
まとめ
ISNUMBER関数は、セルの値が数値かどうかをTRUE/FALSEで判定するシンプルな関数です。
ポイントをおさらいしましょう。
- 引数は1つ。数値ならTRUE、それ以外はFALSE
- 日付・時刻もTRUEになる(内部的にシリアル値だから)
- SEARCH関数やFIND関数と組み合わせると「特定の文字列を含むか」の判定ができる
- 「数値に見えるのにFALSE」のときはセルの書式を確認する
- ISBLANKやISTEXTなど他のIS系関数と用途に応じて使い分ける
数値チェックや部分一致検索に、ぜひ活用してみてください。
関連記事
特定の文字列が含まれるかを検索するなら、SEARCH関数の使い方もあわせてどうぞ。
大文字・小文字を区別して検索したい場合は、FIND関数の使い方を参考にしてください。
空白セルの判定には、ISBLANK関数の使い方が便利です。
条件によって表示を切り替えたい場合は、IF関数の使い方をご覧ください。
エラー判定をしたいときは、ISERROR関数の使い方もチェックしてみてください。
論理値(TRUE/FALSE)かどうかを判定するなら、ISLOGICAL関数の使い方をご覧ください。
