目次を開くExcelで「~以上」や「~より大きい」といった条件を指定したときに、理解しがたい現象が発生するケースもある。「4以上」という条件を指定すると、「5」や「10」などの数値だけでなく、「ABC」や「日本語」などの文字列も「真の場合」として処理されてしまう。今回は、こういった不具合に対処する方法を紹介していこう。今回は、「~以上」や「~より大きい」といった条件を指定したときに生じる不具合について解説していこう。これらの条件を厳密に正しく機能させるには、ISNUMBERなどの「データ型を調べる関数」を利用する必要がある。具体的な例を使って紹介していこう。以下の図は、レストランの予約フォームをExcelで作成した例だ。このレストランでは「4人以上であればコース料理を予約可能」というルールになっている。そこで人数(C5セル)が「4以上であるか?」をチェックする機能を関数IFで作成した。人数が「4以上」をチェックする関数IFこの結果について検証していこう。C5セルに「数値データ」が入力されていた場合だ。以下の図では、C5セルに「3」と入力されている。この数値は「4以上」の条件を満たしていないので「偽の場合」として処理される。これは予想通りの結果といえるだろう。続いては、C5セルに間違って「文字列データ」を入力してしまった場合の例だ。この場合は「4以上」の条件を満たしていないので「偽の場合」として処理されるはずである。実際には「真の場合」として処理され、「OK」の文字が表示されてしまう。人数が「文字」で入力されていた場合このように「~以上」や「~より大きい」といった条件を指定すると、文字列データも「真の場合」として処理されてしまう。似たような例をもうひとつ紹介しておこう。今度は、「真の場合」の処理に(人数)×(コース料金)の数式を指定した例だ。処理されていれば、指定した人数分の料金が自動計算されるはずである。料金を計算する関数IFまずは、普通に「数値データ」を入力したときの結果を紹介する。以下の図ではC5セルに「4以上」の数値が入力されているので「真の場合」として処理され、5×4,800の計算結果が表示される。これは予想通りの結果といえる。この場合も関数IFは「真の場合」として処理され、(C5セル)×4,800の計算を実行しようとする。(文字列)×(数値)は計算できないため「#VALUE」のエラーになってしまう。文字列データは「4以上」の条件を満たしていないので、本来であれば「偽の場合」として処理されるはず・・・、と考えるのが普通かもしれない。実際にはそうなってくれない。このような結果になるのは、Excelが「文字列データ」を「数値データ」より大きいものとして扱う仕様になっているからだ。「△以上」といった条件を指定すると、「△以上の数値データ」だけでなく、「文字列データ」も条件を満たすデータとして処理されてしまうのだ。同様の不具合は「条件付き書式」でも発生する。「100以上」を条件にしてセルを強調表示した場合、「100以上の数値データ」だけでなく「文字列データ」も強調表示されてしまう。いった不具合を解消するには、「データ型を調べる関数」の使い方を覚えておく必要がある。データが「数値」であるかを調べる関数ISNUMBERセルに「数値データが入力されているか?」をチェックするときは、関数ISNUMBERを使用する。この関数は、カッコ内に指定したデータ(セル参照)が「数値データであるか?」を確認してくれるものだ。数値データであった場合はTRUE、そうでない場合はFALSEが返される。簡単な例を紹介しておこう。B2セルのデータが「数値データであるか?」を確認したいときは、「=ISNUMBER(B2)」と関数を記述すればよい。関数ISNUMBERの入力B2セルが「数値データ」であった場合は、結果としてTRUEが返される。関数ISNUMBERの結果(数値データの場合)一方、B2セルが「文字列データ」などの「数値でないデータ」であった場合は、結果としてFALSEが返される。関数ISNUMBERの結果(数値データでない場合)このISNUMBERを関数IFの条件に追加すると、文字列データが「真の場合」として処理される不具合を解消できるようになる。データが「数値」のときのみ「真の場合」として処理するには?ということで、具体的な対処法を紹介していこう。・データ型が「数値」であるか?・数値は「4以上」か?といった2つの条件をANDで結んであげればよい。これを関数IFの条件に指定すると、以下の図に示したような記述になる。結果を確認していこう。C5セルに「4以上の数値」を入力したときは、2つの条件を両方とも満たしているので「真の場合」として処理される。よって、(人数)×4,800の計算結果が表示される。C5セルに「文字列データ」を入力したときは、ISNUMBER(C5)の条件を満たしていないので「偽の場合」として処理される。その結果、「※人数に4以上の数値を入力」と表示される。念のため、「4未満の数値」を入力したときの結果も紹介しておこう。この場合、「4以上」の条件を満たしていないので「偽の場合」として処理される。人数が「4以上」でない場合このように「データ型が数値であるか?」をチェックする条件を追加しておくと、「文字列データ」が「真の場合」として処理される不具合を回避できる。関数ISNUMBERをエラー対策(不具合対策)に活用する方法として覚えておくと役に立つだろう。データ型を調べる関数ISNUMBERのほかにも、Excelには「データ型を調べる関数」がいくつか用意されている。簡単に紹介しておこう。いずれの関数もカッコ内にデータ(セル参照)を指定するだけで使用することが可能だ。◆ISNUMBERデータが「数値」のときにTRUEを返す◆ISEVENデータが「偶数」のときにTRUEを返す※小数点以下を含む場合は「整数部分」で判断される※空白は0(ゼロ)とみなされるためTRUEを返す※文字列の場合は「#VALUE」のエラーになる◆ISODDデータが「奇数」のときにTRUEを返す※小数点以下を含む場合は「整数部分」で判断される※文字列の場合は「#VALUE」のエラーになる◆ISTEXTデータが「文字列」のときにTRUEを返す◆ISNONTEXTデータが「文字列以外」のときにTRUEを返す※「空白セル」の場合もTRUEを返す◆ISBLANKデータが「空白セル」のときにTRUEを返す◆ISLOGICALデータが「ブール値」(TRUEまたはFALSE)のときにTRUEを返すデータ型と関数の結果一覧また、指定したセルで「エラーが発生しているか?」を調べる関数として、以下のような関数も用意されている。◆ISERR「エラー値」のときにTRUEを返す(#N/Aのエラーは例外)◆ISERROR「エラー値」のときにTRUEを返す(#N/A、#VALUE!、#REF!、#DIV/0!、#NUM!、#NAME?、#NULL!のいずれかでTRUE)◆ISNA「#N/A」のエラー値のときにTRUEを返すそのほか、指定したセルに「数式や関数が入力されているか?」を調べるISFORMULA、「セル参照として有効か?」を調べるISREFといった関数もある。◆ISFORMULA「数式」や「関数」が入力されているときにTRUEを返す※「=C2」などのセル参照も数式とみなされる◆ISREF「セル参照」として有効なときにTRUEを返す※セルやセル範囲に名前を定義している場合に活用する関数ISREFだけ使い方が特殊になるので補足説明しておこう。この関数は、カッコ内に記述した文字が「セル参照として有効か?」を調べるものとなる。「=ISREF(C5)」のように「セル参照」を指定するとTRUEが返される。「=ISREF(C5:F10)」のように「セル範囲」を指定したときもTRUEが返される。これらは、C5やC5:F10がセル(セル範囲)の参照として「有効な記述」であることを示している。当然といえば当然の話だ。関数ISREFを効果的に活用できるのは、セルやセル範囲に「名前」を定義している場合だ。E3:E9のセル範囲に「金額」という名前を定義したとしよう。セル範囲に名前を定義この場合、「金額」の文字はセル範囲として「有効な記述」になるため、関数ISREFの結果はTRUEになる。いう名前はどこにも定義されていないので、セル参照やセル範囲として「無効な記述」になる。よって、関数ISREFの結果はFALSEになる。滅多に使わない関数であるが、こういった関数があることを知っておくと、いつか役に立つかもしれない。「データ型を調べる関数」を覚えるついでに動作を確認しておくとよいだろう。※本記事は掲載時点の情報であり、最新のものとは異なる場合があります。「~以上」を正しく機能させる方法このカテゴリーについて統合業務やマネジメントなど、企業の経営資源の有効活用に向けたサービスやソリューションを紹介していきます。Corporation。