概要
「このセルは数値なのか、文字なのかを判定したい」
「数値が入っているときだけ計算したい」
「文字が混ざっている行を除外したい」
こういう“数値かどうかの判定”に使うのが 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 のデータ前処理の基礎として、ぜひ身につけてください。
