Excelで「~以上」や「~より大きい」といった条件を指定したときに、理解しがたい現象が発生するケースもある。たとえば「4以上」という条件を指定すると、「5」や「10」などの数値だけでなく、「ABC」や「日本語」などの文字列も「真の場合」として処理されてしまう。今回は、こういった不具合に対処する方法を紹介していこう。

「~以上」の条件を指定したときに生ずる不具合

今回は、「~以上」や「~より大きい」といった条件を指定したときに生じる不具合について解説していこう。これらの条件を厳密に正しく機能させるには、ISNUMBERなどの「データ型を調べる関数」を利用する必要がある。

  • データの種類(型)をTRUE/FALSEで返すIS系の関数

具体的な例を使って紹介していこう。以下の図は、レストランの予約フォームをExcelで作成した例だ。このレストランでは「4人以上であればコース料理を予約可能」というルールになっている。そこで人数(C5セル)が「4以上であるか?」をチェックする機能を関数IFで作成した。

  • 人数が「4以上」をチェックする関数IF

この結果について検証していこう。まずは、C5セルに「数値データ」が入力されていた場合だ。以下の図では、C5セルに「3」と入力されている。この数値は「4以上」の条件を満たしていないので「偽の場合」として処理される。これは予想通りの結果といえるだろう。

  • 人数が「数値」で入力されていた場合

続いては、C5セルに間違って「文字列データ」を入力してしまった場合の例だ。この場合は「4以上」の条件を満たしていないので「偽の場合」として処理されるはずである。しかし、実際には「真の場合」として処理され、「OK」の文字が表示されてしまう。

  • 人数が「文字」で入力されていた場合

このように「~以上」や「~より大きい」といった条件を指定すると、文字列データも「真の場合」として処理されてしまう。似たような例をもうひとつ紹介しておこう。

今度は、「真の場合」の処理に(人数)×(コース料金)の数式を指定した例だ。正しく処理されていれば、指定した人数分の料金が自動計算されるはずである。

  • 料金を計算する関数IF

まずは、普通に「数値データ」を入力したときの結果を紹介する。以下の図ではC5セルに「4以上」の数値が入力されているので「真の場合」として処理され、5×4,800の計算結果が表示される。これは予想通りの結果といえる。

  • 人数が「数値」で入力されていた場合

では、C5セルに「文字列データ」を入力したときはどうなるだろうか? この場合も関数IFは「真の場合」として処理され、(C5セル)×4,800の計算を実行しようとする。しかし、(文字列)×(数値)は計算できないため「#VALUE」のエラーになってしまう。

  • 人数が「文字」で入力されていた場合

文字列データは「4以上」の条件を満たしていないので、本来であれば「偽の場合」として処理されるはず・・・、と考えるのが普通かもしれない。しかし、実際にはそうなってくれない。

このような結果になるのは、Excelが「文字列データ」を「数値データ」より大きいものとして扱う仕様になっているからだ。つまり、「△以上」といった条件を指定すると、「△以上の数値データ」だけでなく、「文字列データ」も条件を満たすデータとして処理されてしまうのだ。

同様の不具合は「条件付き書式」でも発生する。たとえば「100以上」を条件にしてセルを強調表示した場合、「100以上の数値データ」だけでなく「文字列データ」も強調表示されてしまう。

こういった不具合を解消するには、「データ型を調べる関数」の使い方を覚えておく必要がある。

データが「数値」であるかを調べる関数ISNUMBER

この記事は
Members+会員の方のみ御覧いただけます

ログイン/無料会員登録

会員サービスの詳細はこちら