Excel関数 逆引き集 | 数値か判定 → ISNUMBER

Excel VBA Excel
スポンサーリンク

概要

「このセルは数値なのか、文字なのかを判定したい」
「数値が入っているときだけ計算したい」
「文字が混ざっている行を除外したい」

こういう“数値かどうかの判定”に使うのが ISNUMBER(イズナンバー)関数です。

ISNUMBER はとてもシンプルで、
セルの中身が数値なら TRUE、数値でなければ FALSE
を返します。

TRUE / FALSE を返すので、IF や FILTER、COUNTIF などと組み合わせると
“数値だけを対象にした処理”が簡単に作れるようになります。


ISNUMBER の基本

書式

=ISNUMBER(値)

値が数値なら TRUE
値が文字列・空欄・エラーなら FALSE

例:

  • =ISNUMBER(100) → TRUE
  • =ISNUMBER("ABC") → FALSE
  • =ISNUMBER("") → FALSE
  • =ISNUMBER("100") → FALSE(文字列の100は数値ではない)

ISNUMBER の基本パターン

セルが数値かどうか判定する

=ISNUMBER(A2)

A2 が数値なら TRUE
数値でなければ FALSE


IF と組み合わせて「数値のときだけ計算」

例:A2 が数値なら A2×10、数値でなければ空白。

=IF(ISNUMBER(A2), A2*10, "")

数値でないときに警告を出す

=IF(ISNUMBER(B2), "OK", "数値を入力してください")

ISNUMBER × SEARCH(部分一致の判定)

ISNUMBER は SEARCH と組み合わせると“文字列に特定の語句が含まれるか”を判定できる
という強力な使い方があります。

SEARCH は「見つかった位置(数値)」を返すので、
ISNUMBER で TRUE / FALSE に変換できます。

例:文字列に「東京」が含まれるか判定

=ISNUMBER(SEARCH("東京", C2))
  • C2 に「東京都港区」 → TRUE
  • C2 に「大阪市」 → FALSE

IF と組み合わせて「含まれるときだけ処理」

=IF(ISNUMBER(SEARCH("NG", D2)), "警告", "OK")

ISNUMBER × VALUE(文字列数値を数値として扱いたい)

文字列の「100」を数値として扱いたい場合、
VALUE と組み合わせると便利です。

例:文字列数値を数値に変換して計算

=IF(ISNUMBER(VALUE(E2)), VALUE(E2)*2, "")

ISNUMBER × FILTER(数値だけ抽出)

数値が入っている行だけ抽出する

A2:A100 に数値や文字が混在しているとき、
数値が入っている行だけを B2 から表示したい場合:

=FILTER(A2:A100, ISNUMBER(A2:A100))

TRUE の行だけが抽出されます。


ISNUMBER × COUNTIF(数値の件数を数える)

COUNTIF は数値判定ができないので、
ISNUMBER を使って TRUE / FALSE を 1 / 0 に変換します。

数値の件数を数える

=SUM(--ISNUMBER(A2:A100))

-- は TRUE/FALSE を 1/0 に変換するテクニックです。


よくあるつまずき

「”100″(文字列の100)」は数値ではない

見た目は数値でも、文字列扱いだと ISNUMBER は FALSE を返します。

必要なら VALUE で変換します。


空欄は FALSE

空欄は数値ではないため FALSE になります。


SEARCH と組み合わせるときはエラーに注意

SEARCH は見つからないとエラーになるため、
ISNUMBER と組み合わせるときはそのままで OK ですが、
IFERROR を使うとより安全です。

=ISNUMBER(IFERROR(SEARCH("東京", C2), ""))

例題

問題1

A2 が数値なら TRUE、数値でなければ FALSE を返す式を書いてください。

=ISNUMBER(A2)

問題2

B2 が数値なら B2×10 を計算し、数値でなければ空白を返す式を書いてください。

=IF(ISNUMBER(B2), B2*10, "")

問題3

C2 の文字列に「NG」が含まれるとき TRUE、含まれないとき FALSE を返す式を書いてください(SEARCH+ISNUMBER)。

=ISNUMBER(SEARCH("NG", C2))

問題4

A2:A100 の中から「数値が入っている行だけ」を抽出して B2 から表示する FILTER の式を書いてください。

=FILTER(A2:A100, ISNUMBER(A2:A100))

問題5

D2 が数値でないとき「数値を入力してください」、数値のときは「OK」と表示する式を書いてください。

=IF(ISNUMBER(D2), "OK", "数値を入力してください")

まとめ

ISNUMBER の基本はとてもシンプルです。

数値かどうか判定する

=ISNUMBER(セル)

数値のときだけ計算する

=IF(ISNUMBER(セル), 計算式, "")

文字列に特定語句が含まれるか判定(SEARCH と組み合わせ)

=ISNUMBER(SEARCH("語句", セル))

数値だけ抽出(FILTER と組み合わせ)

=FILTER(範囲, ISNUMBER(範囲))

ISNUMBER を使いこなせると、
「数値だけを対象にした処理」「文字列混在データの整理」が一気に楽になります。
Excel のデータ前処理の基礎として、ぜひ身につけてください。

タイトルとURLをコピーしました